我正在运行Django + Celery + RabbitMQ。在修改了一些任务名称后,我开始获得"未注册的任务" KeyErrors,即使在使用Django Celery Beat中的Periodic任务表中的此键删除任务并重新启动Celery worker之后也是如此。即使在persist之后,他们running with the --purge option。
我怎样摆脱它们?
答案 0 :(得分:1)
要清除最后一项任务,您可以使用旧方法标题重新实现它们,但不能使用逻辑。
例如,如果您删除了方法original
并且现在收到错误
[ERROR/MainProcess] Received unregistered task of type u'myapp.tasks.original'
只需重新创建original
方法,如下所示:
<强> tasks.py 强>
@shared_task
def original():
# keep legacy task header so that it is flushed out of queue
# FIXME: this will be removed in the next release
pass
在每个环境中运行此版本后,将处理任何剩余的任务(并且不执行任何操作)。确保已从定期任务表中删除它们,并且不再调用它们。然后,您可以在下次部署之前删除该方法,并且该问题不应再发生。
这仍然是一种解决方法,最好能够review and delete the tasks individually。