我是一家公司的新雇员,使用Django和芹菜进行异步通信。我对芹菜也很陌生。
之前的程序员留下了一个定义为过时的芹菜任务。它每30秒执行一次数据库检索,执行一串逻辑,然后丢弃结果。这显然是一条死胡同,后来又完成了另一套系统,完成了它真正想做的事情。
我已经从python源文件中删除了任务定义,并从我们的settings.py文件中删除了以下部分:
CELERYBEAT_SCHEDULE = {
"runs-every-30-seconds": {
"task": "foo.tasks.execute_useless_task",
"schedule": timedelta(seconds=30),
},
}问题是,每当我通过主管启动django和芹菜时,芹菜仍然试图执行它。从/var/log/supervisor/celeryd-stdout---supervisor-FZ2Xqo.log (为简洁而截短的行):
ERROR 2014-11-20 15:26:35,637 base+498 Failed to submit message: u'Unknown task ignored: Task of kind \'foo.tasks.execute_useless_task\' is not registered, please make sure it\'s imported...
ERROR 2014-11-20 15:26:35,751 base+504 Unknown task ignored: Task of kind 'foo.tasks.execute_useless_task' is not registered, please make sure it's imported...
ERROR 2014-11-20 15:26:35,764 base+504 Unknown task ignored: Task of kind 'foo.tasks.execute_useless_task' is not registered, please make sure it's imported...
...and so on...我一整天都在试着阅读芹菜文档,找出芹菜到底是如何知道这项任务的,现在我已经从我们的代码库中删除了它的所有痕迹(当然,我同时被拖向50个不同方向,同时也是一个开发人员、管理人员和技术支持人员)。我发现的大多数文档或讨论都是围绕着执行任务的失败而进行的,并且逆转了我所找到的方向,而这并没有带来任何结果。
如果有人能告诉我一些文档,这些文档具体说明了人们可以通过Django注册芹菜任务的所有方式,这样我就能弄清楚到底芹菜是怎么知道存在的,我会很感激的。
发布于 2014-11-20 23:08:21
回答了我自己的问题。
我原以为消息队列是空的,但事实并非如此。清除红宝石帮我解决了这个问题:
# redis-cli
> FLUSHDB
> FLUSHALLhttps://stackoverflow.com/questions/27051173
复制相似问题