我有一个Django应用程序,我已经部署到Heroku。这个应用程序使用Celery进行消息排队,我使用RabbitMQ在本地运行它,没有任何意外。
不幸的是,当我将这个宝宝部署到Heroku时,我发现RabbitMQ插件不可用,而且我必须使用CloudAMQP。 CloudAMQP和Heroku的文档让我相信我可以使用Celery(即使他们推荐Pika),但是当我尝试部署时,我的调度程序和工作进程都会出现粗糙的连接错误。以下是确切的错误:
2012-07-09T16:46:22+00:00 app[scheduler.1]: [2012-07-09 11:46:22,234: ERROR/Beat] Celerybeat: Connection error: [Errno 111] Connection refused. Trying again in 2.0 seconds...
2012-07-09T16:46:23+00:00 app[worker.1]: [2012-07-09 11:46:23,852: ERROR/MainProcess] Consumer: Connection Error: [Errno 111] Connection refused. Trying again in 2 seconds...
我应该注意我的Heroku配置变量有一个CLOUDAMQP_URL,所以这应该不是问题吗?
如果任何使用过CloudAMQP和Django / Heroku的人都能给我一些关于如何确保Celery可以与经纪人联系的指导,我将不胜感激。
答案 0 :(得分:6)
您可能超过了免费计划的3个并发连接限制。将BROKER_POOL_LIMIT设置为1,它应该可以更好地工作。
答案 1 :(得分:4)
确保将此文件放在settings.py
文件的顶部。
import djcelery
djcelery.setup_loader()