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

Nic*_*ick 15 django mod-wsgi webfaction python-2.7

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

apache2/bin/restart
Run Code Online (Sandbox Code Playgroud)

照常.然后我尝试在浏览器上访问我的应用程序,然后我得到了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
Run Code Online (Sandbox Code Playgroud)

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

python2.7 manage.py shell
Run Code Online (Sandbox Code Playgroud)

但我不能在网上找到它,也不能使用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()
Run Code Online (Sandbox Code Playgroud)

Sea*_*n F 20

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

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

WSGIApplicationGroup %{GLOBAL}
Run Code Online (Sandbox Code Playgroud)

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


tuo*_*tik 5

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

TimeOut 600
Run Code Online (Sandbox Code Playgroud)


小智 5

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

python manage.py showmigrations
Run Code Online (Sandbox Code Playgroud)

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