-2
我想在我的Web服務器上有一個連續的背景循環。我仍然希望有可能打開和關閉循環使用瓶給我的芹菜工人的命令。芹菜中的while循環似乎只運行一次。在芹菜任務中設置一個while循環
from celery import Celery
@app.task
def count(i):
if i == 1: # turn on command
while True: # a while loop to achieve what I want to do
i = i+1
return i
elif i == 0: # turn off command given by flask
return i
我也試過celery_beat,但這需要我提前給出參數,而不是接受來自其他來源的命令。
app.conf.update(
CELERYBEAT_SCHEDULE = {
'add-every-1-seconds': {
'task': 'tasks.count',
'schedule': timedelta(seconds=1),
#'args': (1)
},
})
你在while循環中有一個'return'。這就是它停止的原因。 – dirn
反對票只是因爲這不是你應該如何使用芹菜。如果你需要一個正在運行的進程,只需要創建一個進程,那麼使用Celery將會是一個不必要的複雜因素。如果需要,每隔幾秒排隊一次任務,但是芹菜任務應該是有限的。 – joshua
嗨,感謝您的解釋。但是,我希望只有在需要時才能調用此後臺進程。我也通過ssh或web界面遠程訪問,希望即使我註銷,該過程也會繼續運行。 –