芹菜周期性任务没有在Django中运行

问题描述 投票:1回答:1

文件结构

proj/proj/
         celery.py
         (and other files)
    /sitesettings/
         tasks.py
         (and other files)

celery.朋友

app = Celery('mooncake',broker_url = 'amqp://')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()

站点设置/ tasks.py

from __future__ import absolute_import, unicode_literals
from comma.models import Post
from mooncake.celery import app

app.conf.beat_schedule = {
'every-5-seconds': {
    'task': 'sitesettings.tasks.statisticsTag',
    'schedule': 5.0,
    'args': ()
},
}

@app.task
def statisticsTag():
    print(Post.objects.all()[0])

并运行它

celery -A proj beat -l info

把它放在一起

[2019-02-22 18:21:08,346: INFO/MainProcess] Scheduler: Sending due task every-5-seconds (sitesettings.tasks.statisticsTag)

但没有进一步的输出。我曾经尝试在proj / celery.py中编写它,但它无法运行因为我必须从另一个应用程序导入,它退出时出现“app not loaded”错误。所以我该怎么做?

python django celery django-celery celerybeat
1个回答
2
投票

你打电话来启动芹菜celery -A proj beat -l info的命令是芹菜的starting a beat scheduler instance,它将应有的任务发送给一个工人实例。

您还需要执行这些应有任务的start a worker server。你可以用命令celery -A proj worker -l info开始一个芹菜工人。这需要在调度程序运行的同时运行。

或者你可以运行一个工人with embedded beat scheduler celery -A proj woker -B -l info,但不建议用于生产用途。

© www.soinside.com 2019 - 2024. All rights reserved.