Django Webfaction'从守护进程读取响应头时超时'

问题描述 投票:11回答:3

我在Webfaction上托管的生产服务器上的Django应用程序工作正常,直到我在将更改推送到settings.py文件后尝试重新启动它。我跑了

apache2/bin/restart

照常。然后我尝试在浏览器上访问我的应用程序,然后我得到了504网关超时。我查看了mod_wsgi日志并看到了这个:

[Thu Nov 03 23:46:53.605625 2016] [wsgi:error] [pid 8027:tid 139641332168448]
[client 127.0.0.1:34570] Timeout when reading response headers from daemon 
process 'myapp' : /home/<me>/webapps/<myapp>/<ProjectName>/<myapp>/wsgi.py

这是什么意思,我该如何解决?我在settings.py文件中唯一更改的是移动一些变量名称。我仍然可以成功地与应用程序进行交互

python2.7 manage.py shell

但我不能在网上找到它,也不能使用API​​。

编辑:这是我的wsgi.py文件:

import os

from django.core.wsgi import get_wsgi_application

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "<myapp>.settings")

application = get_wsgi_application()
django python-2.7 mod-wsgi webfaction
3个回答
19
投票

已知Python C扩展模块(如numpy)在mod_wsgi下使用时会导致超时。在https://serverfault.com/a/514251/109598上有一个明确的问题解释(直接来自mod_wsgi的作者)

如果这听起来可能是您的问题的原因,那么解决方案可能很简单 - 将以下内容添加到您的httpd.conf:

WSGIApplicationGroup %{GLOBAL}

进行更改后,请务必重新启动Apache实例。


1
投票

尝试在Timeout中增加httpd.conf指令,在Apache 2.4中默认为60秒。例如:

TimeOut 600

0
投票

以下是我如何找到问题的根本原因。

python manage.py showmigrations

我的应用程序无法访问数据库服务器,因此最终会超时。运行manage.py我可以看到在控制台上看到错误消息。

© www.soinside.com 2019 - 2024. All rights reserved.