【发布时间】:2014-10-18 02:14:35
【问题描述】:
我正在尝试将 Django 应用程序部署到 Elastic Beanstalk。当我访问该页面时,它永远不会加载。日志说:
Script timed out before returning headers: wsgi.py
我可以通过 ssh 进入服务器并从另一个终端运行 manage.py runserver 和 curl 127.0.0.1:8000,这将成功返回页面。所以我假设它一定是作为 Elastic Beanstalk 的一部分设置的 Apache 配置的问题。
这里有更多日志:
[pid 15880] AH01232: suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[so:warn] [pid 15880] AH01574: module wsgi_module is already loaded, skipping
[auth_digest:notice] [pid 15880] AH01757: generating secret for digest authentication ...
[lbmethod_heartbeat:notice] [pid 15880] AH02282: No slotmem from mod_heartmonitor
[mpm_prefork:notice] [pid 15880] AH00163: Apache/2.4.9 (Amazon) mod_wsgi/3.4 Python/2.7.5 configured -- resuming normal operations
[core:notice] [pid 15880] AH00094: Command line: '/usr/sbin/httpd -D FOREGROUND'
[:error] [pid 15881] /opt/python/run/venv/lib/python2.7/site-packages/numpy/oldnumeric/__init__.py:11: ModuleDeprecationWarning: The oldnumeric module will be dropped in Numpy 1.9
[:error] [pid 15881] warnings.warn(_msg, ModuleDeprecationWarning)
[:error] [pid 15881]
[core:error] [pid 15884] [client 10.248.110.45:58996] Script timed out before returning headers: wsgi.py
还有我的 wsgi.py 文件:
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "aurora.settings")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
有什么线索可以说明是什么原因造成的吗?
更新:
我重建了我的环境并再次遇到了这个问题。我更新了/etc/httpd/conf.d/wsgi.conf 以包括WSGIApplicationGroup %{GLOBAL} as mentioned here。我正在使用 Scipy、Numpy 和 GeoDjango(使用 GDAL)。我知道 GDAL 不是完全线程安全的,我不确定其他人,但我假设这是一个线程安全问题。
【问题讨论】:
-
我正在使用 pandas 和 numpy 并遇到了同样的问题。添加
WSGIApplicationGroup %{GLOBAL}解决了这个问题 - 但是手动编辑文件并不能解决新的 beanstalk 实例。要解决这个问题,请按照this answer 中描述的步骤操作 -
重启 beanstalk 实例后也一样。
标签: django apache mod-wsgi wsgi amazon-elastic-beanstalk