Celery未注册的任务KeyError

时间:2014-07-22 16:03:03

标签: python asynchronous rabbitmq celery celery-task

我通过在终端中执行以下操作来启动工作人员:

celery -A cel_test  worker --loglevel=INFO --concurrency=10 -n worker1.%h

然后我收到一条长循环错误消息,指出芹菜已收到未注册的任务并已触发:

KeyError: 'cel_test.grp_all_w_codes.mk_dct' #this is the name of the task

问题在于cel_test.grp_all_w_codes.mk_dct不存在。事实上,即使是模块cel_test.grp_all_w_codes,也更不用说任务mk_dct了。几天前曾有过一次,但我删除了它。我想也许有一个.pyc文件浮动但是没有。我也无法在我的代码中找到引发错误的任务的单个引用。我关闭了我的计算机并重新启动了rabbitmq服务器,认为可能引用某些东西只是卡在内存中但它没有帮助。

有谁知道这里可能出现什么问题或者我错过了什么?

1 个答案:

答案 0 :(得分:3)

好吧,在不知道你的conf文件的情况下,我可以看到两个可能引起这种情况的原因:

  • 当您停止工作并删除模块时,mk_dct任务尚未完成。如果您使用CELERY_ACKS_LATE运行,则每次重新运行工作时都会尝试重新启动任务。尝试删除此设置,或使用purge option.
  • 启动工作人员

celery -A cel_test worker --loglevel=INFO --concurrency=10 -n worker1.%h --purge

  • 你的芹菜击败mk_dct任务。如果是这样,请尝试重新启动芹菜节拍并清除它的数据库后端(如果您有自定义数据库后端)。

如果没有解决问题,请发布您的芹菜conf,并确保已清理项目的所有.pyc并重新启动所有内容。