【发布时间】:2016-10-10 19:39:21
【问题描述】:
我正在尝试在 AWS EC2 上的 Ubuntu 实例上运行我的 django 服务器。我正在使用 gunicorn 像这样运行服务器:
gunicorn --workers 4 --bind 127.0.0.1:8000 woc.wsgi:application --name woc-server --log-level=info --worker-class=tornado --timeout=90 --graceful-timeout=10
当我发出请求时,我在浏览器上收到 502,Bad Gateway。这是服务器日志http://pastebin.com/Ej5KWrWs
settings.py 文件中根据主机名更改行为的部分是
iUbuntu 是我笔记本电脑的主机名
if socket.gethostname() == 'iUbuntu':
'''
Development mode
"iUbuntu" is the hostname of Ishan's PC
'''
DEBUG = TEMPLATE_DEBUG = True
else:
'''
Production mode
Anywhere else than Ishan's PC is considered as production
'''
DEBUG = TEMPLATE_DEBUG = False
if socket.gethostname() == 'iUbuntu':
'''Development'''
ALLOWED_HOSTS = ['*', ]
else:
'''Production Won't let anyone pretend as us'''
ALLOWED_HOSTS = ['domain.com', 'www.domain.com',
'api.domain.com', 'analytics.domain.com',
'ops.domain.com', 'localhost', '127.0.0.1']
(我不明白这部分代码的目的是什么。由于我从某人那里继承了代码并且服务器正在工作,所以我不会在不了解它的作用的情况下将其删除)
if socket.gethostname() == 'iUbuntu':
MAIN_SERVER = 'http://localhost'
else:
MAIN_SERVER = 'http://domain.com'
我无法弄清楚这里有什么问题。相同的代码在我的笔记本电脑上使用 gunicorn 运行良好。
我还制作了一个小 hello world node.js 服务于端口 8000 以测试 nginx 配置,它运行良好。所以没有 nginx 错误。
更新:
我将 DEBUG 设置为 True 并复制了 Traceback http://pastebin.com/ggFuCmYW
更新:
感谢@ARJMP 的回复。这确实是芹菜消费者没有连接到经纪人的问题。
我正在像这样配置 celery:app.config_from_object('woc.celeryconfig') 和 celeryconfig.py 的内容是:
BROKER_URL = 'amqp://celeryuser:celerypassword@localhost:5672/MyVHost'
CELERY_RESULT_BACKEND = 'rpc://'
我正在这样运行工人:celery worker -A woc.async -l info --autoreload --include=woc.async -n woc_celery.%h
我得到的错误是:
consumer: Cannot connect to amqp://celeryuser:**@127.0.0.1:5672/MyVHost: [Errno 104] Connection reset by peer.
【问题讨论】:
-
请发布完整的堆栈跟踪
-
我将 DEBUG 设置为 True 并复制了 Traceback http://pastebin.com/ggFuCmYW
-
堆栈跟踪似乎表明您的 celery 工作人员无法连接您的消息队列 (amqp) 服务器。 A similar issue 已通过升级他们的 celery 版本解决。
标签: python django amazon-ec2 rabbitmq celery