当我尝试运行 Celery 定时任务时,为什么会出现 KeyError: 'scheduler' 错误?

3

我在Django中使用celery来定期调度任务。以下是文件:

tasks.py

@periodic_task(run_every=timedelta(minutes=1))
def query():
...

celery.py

from __future__ import absolute_import, unicode_literals

from os import environ, path

from celery import Celery
from django.conf import settings

PROJECT_NAME = path.basename(path.dirname(__file__))
environ.setdefault('DJANGO_SETTINGS_MODULE', '%s.settings' % PROJECT_NAME)

app = Celery(PROJECT_NAME)
app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)

当我运行时

celery -A project worker

启动工作线程时,执行正常。但是,当我运行

celery -A project beat

开始启动节拍调度器时,我收到以下错误:

KeyError: 'scheduler'

这种情况为什么会发生?我正在PyCharm中使用Vagrant,并通过vagrant ssh访问服务器。
更新:
如果我运行
celery -A project worker --beat --scheduler django --loglevel=info

我没有看到错误提示,但工作人员并没有收到任何任务。因此,似乎由于某种原因,任务没有被接收。

此外,加入...

app.conf.beat_schedule = {
    "query": {
        "task": "query",
        "schedule": crontab(minute="*", hour="*", day_of_month='*')
    }
}

修改 celery.py 并添加

@app.task(name="query")

tasks.py无法工作。

1个回答

0

尝试在任务上添加路径

app.conf.beat_schedule = {

    "query": {

        "task": "query",

        "schedule": crontab(minute="*", hour="*", day_of_month='*')
    }
}

尝试在任务上添加路径 - project_name.tasks.func_name


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接