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



文件结构

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

芹菜.py

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

siteSettings/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中写下它,但是它不能运行,因为我必须从另一个应用程序导入,它会带有"未加载"错误退出。那我该怎么办?

您要呼叫的命令启动芹菜celery -A proj beat -l info正在启动芹菜的Beat Scheduler实例,该实例将适当任务发送到Worker实例。

您还需要启动一个工作服务器,该服务器将执行这些应有的任务。您可以使用命令celery -A proj worker -l info启动芹菜工人。这需要在您的调度程序运行时同时运行

另外,您可以使用嵌入式节拍调度程序celery -A proj worker -B -l info运行一个工人,但不建议用于生产使用。

相关内容

  • 没有找到相关文章

最新更新