gpt4 book ai didi

python - 设定时间后, celery 节拍不发送 crontab 任务

转载 作者:太空宇宙 更新时间:2023-11-04 00:27:02 25 4
gpt4 key购买 nike

我使用的是 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()

这个有效:

@app.task
@periodic_task(run_every=(crontab()))
def shutdown_vms():
inst = C2CManage(['stop','kube'])
inst.run()
return

这个有效:

@app.task
@periodic_task(run_every=(crontab(minute=30,hour='*')))
def shutdown_vms():
inst = C2CManage(['stop','kube'])
inst.run()
return

这行不通:

@app.task
@periodic_task(run_every=(crontab(minute=30,hour=6)))
def shutdown_vms():
inst = C2CManage(['stop','kube'])
inst.run()
return

Beat 很好地完成了任务:

<ScheduleEntry: dashboard.tasks.shutdown_vms dashboard.tasks.shutdown_vms() <crontab: 30 6 * * * (m/h/d/dM/MY)>

但它永远不会发送它。我让流程运行了一个周末,但它从未提交任务。我不知道我做错了什么。我确实有其他按 timedelta 周期运行的任务,它们都运行良好。

任何帮助都会很棒。

编辑:主机设置为使用 America/New_York 时区。

EDIT2:将节拍作为一个单独的进程运行:

celery -A dashboard worker -l info

celery -A dashboard beat -l debug

我主要以分离方式运行它们或使用 multi。

最佳答案

一个简单的解决方案是

在 celery 设置中更新以下配置

app.conf.enable_utc = False
app.conf.timezone = "Asia/Calcutta" #change to your timezone

关于python - 设定时间后, celery 节拍不发送 crontab 任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47100339/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com