我想在我的网络服务器上的后台持续进行一个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)
},
})
答案 0 :(得分:0)
感谢@ dim的回答。我现在的代码是:
@app.task
def count(i):
if i == 1:
while True: # a while loop to achieve what I want to do
i = i+1
time.sleep(1)
print i
print 'i am counting'
启动工人:
$ celery -A tasks worker -l info
从python中调用它
>> from tasks import count
>> result = count(1)
从python
停止循环>> result.revoke(terminate=True)
希望这对想要在芹菜任务中循环的人有用。