我在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服务已经照顾好了这个问题。
非常感谢任何建议!
BROKER_POOL_LIMIT
调整为1吗?你也可以尝试按照建议减少celery的并发性,使用CELERYD_OPTS="--concurrency=1"
。这可能会防止你超过使用限制,这可能是你的问题所在? - Nat Dempkowski