我正在使用 celery 4.1,除了我在 crontab 任务中设置时间的地方之外,所有定期任务都可以正常工作。我认为这与时区设置有关,但我似乎无法弄清楚问题出在哪里。
仪表板/celery.py
from __future__ import absolute_import, unicode_literals
from celery import Celery
app = Celery('dashboard',
broker='redis://',
backend='redis://localhost',
include=['dashboard.tasks'])
app.conf.update(
result_expires=3600,
enable_utc = False,
timezone = 'America/New_York'
)
if __name__ == '__main__':
app.start()
Run Code Online (Sandbox Code Playgroud)
这有效:
@app.task
@periodic_task(run_every=(crontab()))
def shutdown_vms():
inst = C2CManage(['stop','kube'])
inst.run()
return
Run Code Online (Sandbox Code Playgroud)
这有效:
@app.task
@periodic_task(run_every=(crontab(minute=30,hour='*')))
def shutdown_vms():
inst = C2CManage(['stop','kube'])
inst.run()
return
Run Code Online (Sandbox Code Playgroud)
这不起作用:
@app.task
@periodic_task(run_every=(crontab(minute=30,hour=6)))
def shutdown_vms():
inst = C2CManage(['stop','kube'])
inst.run()
return
Run Code Online (Sandbox Code Playgroud)
Beat 很好地完成了任务:
<ScheduleEntry: dashboard.tasks.shutdown_vms dashboard.tasks.shutdown_vms() <crontab: 30 6 * * * (m/h/d/dM/MY)>
Run Code Online (Sandbox Code Playgroud)
但它从不发送它。我已经让进程运行了一个周末,但它从未提交任务。我不知道我做错了什么。我确实有其他按 timedelta 周期运行的任务,它们都运行得很好。 …