我有一个Django应用程序,我已经部署到Heroku。这个应用程序使用Celery进行消息排队,我已经使用RabbitMQ在本地运行了它,没有发生任何意外。
不幸的是,当我将这个baby部署到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,所以这应该不是问题吗?
如果任何在Django/Heroku中使用过CloudAMQP的人能给我一些关于如何确保Celery能够与经纪人联系的指导,我将不胜感激。
您可能已经超过了免费计划的3个并发连接限制。将BROKER_POOL_LIMIT设置为1,它应该会更好地工作。
确保将其放在settings.py
文件的顶部。
import djcelery
djcelery.setup_loader()