定期使用芹菜执行任务

时间:2019-05-08 07:05:47

标签: django celery django-celery

我正试图在Django中用芹菜执行任务。我想每天在12:30 pm执行此任务,为此我将其写在了task.py

@periodic_task(run_every=crontab(minute=30, hour=12), name="elast")
def elast():
        do something


这不起作用,但是如果我想每30秒安排一次,我就编写这段代码

@periodic_task(run_every=(timedelta(seconds=30)), name="elast")
def elast():
        do something

这行得通。我想知道第一段代码有什么问题吗?任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

根据最新的celery 4.3版本,在以下代码的12:30 pm执行任务将很有用 celery.py

from celery.schedules import crontab

app.conf.beat_schedule = {
    # Executes every day at  12:30 pm.
    'run-every-afternoon': {
        'task': 'tasks.elast',
        'schedule': crontab(hour=12, minute=30),
        'args': (),
    },
}

tasks.py

import celery
@celery.task
def elast():
    do something

启动芹菜节拍调度器 芹菜-A项目工人-B

适用于celery 2.0左右的旧版本

from celery.task.schedules import crontab
from celery.decorators import periodic_task

@periodic_task(run_every=crontab(hour=12, minute=30))
def elast():
    print("code execution started.")

请检查时区设置。

New userguide

Old userguide

答案 1 :(得分:0)

查看documentation,尤其是Django用户专用的部分。另请注意,不建议使用@periodic_task装饰器,而应将其替换为beat_schedule配置(请参见code)。