3 回答

TA貢獻1982條經(jīng)驗 獲得超2個贊
芹菜部分:
def long_func(*args, **kwargs):
i = 0
while True:
yield i
do_something_here(*args, **kwargs)
i += 1
@task()
def test_yield_task(task_id=None, **kwargs):
the_progress = 0
for the_progress in long_func(**kwargs):
cache.set('celery-task-%s' % task_id, the_progress)
Web客戶端,開始任務(wù):
r = test_yield_task.apply_async()
request.session['task_id'] = r.task_id
測試最后的屈服值:
v = cache.get('celery-task-%s' % session.get('task_id'))
if v:
do_someting()
如果您不喜歡使用緩存或無法使用緩存,則可以使用db,文件或celery worker和服務(wù)器端都可以同時訪問的任何其他位置。使用緩存是最簡單的解決方案,但是工作人員和服務(wù)器必須使用相同的緩存。
添加回答
舉報