Django Webfaction 'Timeout when reading response headers from daemon process'

Django Webfaction 'Timeout when reading response headers from daemon process'

我在 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()

Python C 扩展模块,如 numpy,已知在 mod_wsgi 下使用时会导致超时。 https://serverfault.com/a/514251/109598

上提供了对问题的清晰解释(直接来自 mod_wsgi 的作者)

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

WSGIApplicationGroup %{GLOBAL}

确保在进行更改后重新启动 Apache 实例。

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

TimeOut 600

这是我找到问题根本原因的方法。

python manage.py showmigrations

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

在我的例子中 (Python 3.6),mimetypes 模块导致了这个问题。我没有进一步调查这个问题,但是删除对 mimetypes.guess_type 的调用解决了这个问题。调用是在相关的 Django 视图函数中进行的。

我遇到了同样的问题,因为 wsgi 进程所在的用户的主目录 运行 在服务器升级期间的某个时候变得不可用。

这可能会对某人有所帮助。