我试图使用Celery为我的Django项目编写后端异步进程。 我使用Cloudamqp和Heroku一起使用Rabbitmq作为我的任务队列 问题是:整个项目在我自己的笔记本电脑上完美运行(使用localhost进行测试),而它在生产服务器上没有工作。
这是我收到的错误消息:[Errno 111] Connection refused
然后我做了一些研究,我可能错了,但似乎问题是我已经达到了工人数量的限制,因为我现在正在使用Heroku的免费帐户。
我读到了这个:"但是如果你使用免费计划,请记得调整BROKER_POOL_LIMIT。将它设置为1,你应该是好的。如果您遇到连接问题,请尝试降低Web工作者和芹菜工作者的并发性。"但我不知道该怎么做。
这是我的setting.py:
BROKER_URL="amqp://paswzaog:0TwC3i7cBdTAKA9JE57EMm1xUzovFbry@turtle.rmq.cloudamqp.com/paswzaog"
BROKER_POOL_LIMIT = 1
CELERY_ACCEPT_CONTENT = ['json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_RESULT_BACKEND='djcelery.backends.database:DatabaseBackend'
CELERY_BEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler'
CELERY_RESULT_BACKEND = 'amqp'
CELERY_TASK_RESULT_EXPIRES = 18000 # 5 hours.`
以下是错误消息:
'[Errno 111] Connection refused
'/app/.heroku/python/bin',
'/app/.heroku/python/lib/python2.7/site-packages/setuptools-3.6-py2.7.egg',
'/app/.heroku/python/lib/python2.7/site-packages/pip-1.5.6-py2.7.egg',
'/app',
'/app/.heroku/python/lib/python27.zip',
'/app/.heroku/python/lib/python2.7',
'/app/.heroku/python/lib/python2.7/plat-linux2',
'/app/.heroku/python/lib/python2.7/lib-tk',
'/app/.heroku/python/lib/python2.7/lib-old',
'/app/.heroku/python/lib/python2.7/lib-dynload',
'/app/.heroku/python/lib/python2.7/site-packages',
'/app','
以前有人有类似的问题吗?或者有人可以推荐一个关于如何在Ceoku上设置Celery东西的全面教程吗?提前致谢!
答案 0 :(得分:0)
您的凭据可能无效。要么是那个,要么你有多个并发连接。
测试这个的一个好方法是将你的网络服务器扩展到0(heroku scale web = 0),然后创建一个工人(heroku scale worker = 1) - 然后拖尾你的Heroku日志(heroku日志 - 看看你的单身工人是否可以联系。