Mat*_*let 6 python scheduled-tasks job-scheduling celery celerybeat
我正在使用芹菜 4.3.0。我正在尝试根据 json 文件中的时间表每 5 秒更新一次 celery beat 的时间表,以便当我手动编辑、添加或删除该 json 文件中的计划任务时,celery beat 会获取更改调度程序而无需重新启动它。
我尝试的是创建一个任务,通过更新app.conf['CELERYBEAT_SCHEDULE']. 该任务每 5 秒成功运行一次,但 celery beat 不会更新到新的计划,即使我设置beat_max_loop_interval为 1 秒。
任务.py
from celery import Celery
app = Celery("tasks", backend='redis://', broker='redis://')
app.config_from_object('celeryconfig')
@app.task
def hello_world():
return "Hello World!"
@app.task
def update_schedule():
with open("path_to_scheduler.json", "r") as f:
app.conf['CELERYBEAT_SCHEDULE'] = json.load(f)
Run Code Online (Sandbox Code Playgroud)
芹菜配置文件
beat_max_loop_interval = 1 # Maximum number of seconds beat can sleep between checking the schedule
beat_schedule = {
"greet-every-10-seconds": {
"task": "tasks.hello_world",
"schedule": 10.0
},
'update_schedule': {
'task': 'tasks.update_schedule',
'schedule': 5.0
},
}
Run Code Online (Sandbox Code Playgroud)
时间表.json
{
"greet-every-2-seconds": {
"task": "tasks.hello_world",
"schedule": 2.0
},
"update_schedule": {
"task": "tasks.update_schedule",
"schedule": 5.0
}
}
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激。如果您知道从文件重新加载节拍时间表的更好方法,我也很想听听。
| 归档时间: |
|
| 查看次数: |
2096 次 |
| 最近记录: |