【发布时间】:2015-01-18 23:56:30
【问题描述】:
我是一家公司的新员工,该公司使用 Django 和 Celery 进行异步通信。我也是 Celery 的新手。
之前的程序员留下了一个过时的 Celery 任务定义。它每 30 秒执行一次数据库检索,执行一堆逻辑,然后将结果丢弃。这显然是一个死胡同,后来完成了一个不同的系统,该系统完成了这实际上应该做的事情。
我已经从 python 源文件中删除了任务定义,并且还从我们的 settings.py 文件中删除了以下部分:
CELERYBEAT_SCHEDULE = {
"runs-every-30-seconds": {
"task": "foo.tasks.execute_useless_task",
"schedule": timedelta(seconds=30),
},
}
问题是,每当我通过主管启动 django 和 Celery 时,Celery 仍在尝试执行它。来自 /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...
我整天都在尝试通读 celery 文档,以确切了解 celery 是如何知道这项任务的,现在我已经从我们的代码库中删除了它的所有痕迹(同时被拉向 50 个不同的方向,自然而然地同时成为开发人员、管理员和技术支持人员)。我发现的大多数文档或讨论都围绕着无法执行任务,并且扭转我发现的方向没有任何结果。
如果有人可以指导我查看一些文档,该文档准确地指定了通过 Django 向 celery 注册任务的所有方式,以便我弄清楚 celery 是如何知道该任务存在的,我将不胜感激。
【问题讨论】:
标签: django scheduled-tasks celery