django - 脚本在 Elastic Beanstalk 上返回 header : wsgi. py 之前超时

标签 django apache mod-wsgi wsgi amazon-elastic-beanstalk

我正在尝试将 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 并不完全是线程安全的,我不确定其他人,但我假设这是一个线程安全问题。

最佳答案

2017 年 2 月 8 日更新

以前我的 wsgi.conf只使用一个进程:

WSGIDaemonProcess wsgi 进程=1 线程=15 显示名称=%{GROUP}

我将流程提高到更合理的水平并且没有任何问题:

WSGIDaemonProcess wsgi 进程=6 线程=15 显示名称=%{GROUP}

此更改与 WSGIApplicationGroup %{GLOBAL} 的原始添加一起似乎已经成功了。

2015 年 9 月 17 日更新

我仍然偶尔会遇到这个问题。通常,通过 eb deploy 重新部署解决了这个问题。很难说根本问题是什么。

原答案

我最终让项目正常工作,但随后尝试创建一个用于新实例的图像,这又重新打开了问题。我不确定为什么它工作然后停止工作,但我从头开始重建我的自定义 AMI,然后重新推送我的项目。原来这是 wsgi.py 中的一个问题.我发布的版本实际上与部署的版本不同。出于某种原因,另一位开发人员将其放入 wsgi.py :

path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
if path not in sys.path:
sys.path.append(path)

我删除了它并解决了问题。

我对任何人的建议
Script timed out before returning headers: wsgi.py

是检查你的 wsgi.py 文件。

关于django - 脚本在 Elastic Beanstalk 上返回 header : wsgi. py 之前超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25477268/

相关文章:

当 send_mail 在 Apache2.4 后面时,Django 1.10 SSLv2_method 导入错误

python - python项目中的Elasticsearch

django - 更好地扩展或替代 Django 用户模型?

php - 网站被部分下载

php - 使用 codeigniter 和 htaccess 删除 index.php 和 301 重定向

python - 在 Windows 64 位上将 mod_wsgi 模块加载到 apache 中的问题

python - AttributeError 'tuple' 对象没有属性 'values' django rest framework

python - 应用程序的自定义 django 管理模板

python - Django新手试图让treeio在apache后面工作

python - Flask 向 URL 添加尾部斜线,没有路由匹配