胡說(shuō)叔叔
2021-12-21 16:27:00
我正在使用celery和celery-beat不使用Django,我有一個(gè)任務(wù)需要celery-beat在運(yùn)行時(shí)修改計(jì)劃。現(xiàn)在我有以下代碼(名為 的模塊celery_tasks):# __init__.pyfrom .celery import app as celery_app__all__ = ['celery_app']#celery.pyfrom celery import Celeryimport configcelery_config = config.get_celery_config()app = Celery( __name__, include=[ 'celery_tasks.tasks', ],)app.conf.update(celery_config)# tasks.pyfrom celery_tasks import celery_appfrom celery import shared_task@shared_taskdef start_game(): celery_app.conf.beat_schedule = { 'process_round': { 'task': 'celery_tasks.tasks.process_round', 'schedule': 5, }, }我從celery以下命令開(kāi)始:celery worker -A celery_tasks -E -l info --beatstart_game正常執(zhí)行和存在,但beatprocess_round任務(wù)從不運(yùn)行。如何強(qiáng)制重新加載節(jié)拍計(jì)劃(重新啟動(dòng)所有工人似乎不是一個(gè)好主意)?
2 回答

胡子哥哥
TA貢獻(xiàn)1825條經(jīng)驗(yàn) 獲得超6個(gè)贊
啟動(dòng) celerybeat 進(jìn)程時(shí)普通 celery 后端的問(wèn)題。是否會(huì)創(chuàng)建一個(gè)配置文件并將所有任務(wù)和計(jì)劃寫入該文件,
以便它不能動(dòng)態(tài)更改您可以使用該包, celerybeat-sqlalchemy-scheduler
以便您可以編輯 DB 本身的計(jì)劃,以便 celerybeat 將從 DB 本身獲取新計(jì)劃
還有另一個(gè)celery-redbeat
使用 redis-server 作為后端的包
你可以參考這本也

守著一只汪
TA貢獻(xiàn)1872條經(jīng)驗(yàn) 獲得超4個(gè)贊
使用 schedule config 似乎也是個(gè)壞主意。如果最初 process_round 任務(wù)將處于活動(dòng)狀態(tài)并檢查游戲是否未開(kāi)始,那么什么都不做。
添加回答
舉報(bào)
0/150
提交
取消