在Heroku Flask应用中出现Celery/CloudAMQP错误

10

我在Heroku(免费版)上运行一个Flask应用程序,并在使用apply_async安排任务时遇到了一些问题。如果我安排超过两个任务,则会出现长的堆栈跟踪和异常:

AccessRefused(403, u"ACCESS_REFUSED - access to exchange 'celeryresults' in vhost 'rthtwchf' refused for user 'rthtwchf'", (40, 10), 'Exchange.declare')

奇怪的是,在重新启动所有进程之前,前两个任务总是没有问题完成。

通过一点搜索引擎调查,我找到了https://stackoverflow.com/questions/21071906/celery-cannot-connect-remote-worker-with-new-username,看起来像一个权限问题,但我会假设Heroku CloudAMPQ服务已经照顾好了这个问题。

非常感谢任何建议!


1
让我们来看看,发送电子邮件至support@cloudamqp.com - Carl Hörberg
1
@CarlHörberg,公共更新?我也遇到了这个问题,根据点赞的数量,可能还有其他人。 - Brad Koch
你的连接不足了。请确保限制连接池和工作线程的数量。 - Carl Hörberg
你尝试过按照CloudAMQP文档中所述将celery的BROKER_POOL_LIMIT调整为1吗?你也可以尝试按照建议减少celery的并发性,使用CELERYD_OPTS="--concurrency=1"。这可能会防止你超过使用限制,这可能是你的问题所在? - Nat Dempkowski
你真的需要使用结果后端吗? - Pedro Werneck
1个回答

1
我认为您的连接已经超过了3个(免费计划限制)。将BROKER_POOL_LIMIT设置为1即可解决问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接