我正试图在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
这行得通。我想知道第一段代码有什么问题吗?任何帮助将不胜感激。
答案 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.")
请检查时区设置。
答案 1 :(得分:0)
查看documentation,尤其是Django用户专用的部分。另请注意,不建议使用@periodic_task
装饰器,而应将其替换为beat_schedule
配置(请参见code)。