为什么芹菜试图执行不再存在的任务



我是一家使用Django和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...

我一直在尝试通读芹菜文档,以确切地了解芹菜如何了解该任务,现在我已经从我们的代码库中删除了它的所有痕迹(同时被拉向 50 个不同的方向,同时作为开发人员、管理员和技术支持台, 自然)。我发现的大多数文档或讨论都是围绕执行任务失败的,而扭转我发现的方向是无济于事的。

如果有人能指导我找到一些文档,其中准确指定了通过 Django 用芹菜注册任务的所有方法,以便我可以弄清楚芹菜怎么可能知道该任务的存在,我将不胜感激。

回答了我自己的问题。

我原以为消息队列是空的,但事实并非如此。 清除 redis 为我解决了问题:

# redis-cli
> FLUSHDB
> FLUSHALL

回答问题:如何删除 Redis 中的所有内容?

相关内容

  • 没有找到相关文章