【发布时间】:2019-03-19 15:36:38
【问题描述】:
我正在尝试使用 Celery 运行多个异步作业,虽然函数的行为正常,但我不断收到以下错误:
RuntimeWarning: Never call result.get() within a task! See http://docs.celeryq.org/en/latest/userguide/tasks.html#task-synchronous-subtasks
即使我从不调用 results.get()。我的程序的工作方式是 Celery 订阅了一个队列,从而启动了一项管理任务。根据消息的内容,它会设置 1 个或多个子任务并将它们作为异步组运行,然后等待它们完成:
job = group(tasks) if len(tasks) == 1 else group(*tasks)
result = job.apply_async()
# Wait for jobs to finish.
cycles = 0
while not result.ready() and cycles < (timeout / step):
time.sleep(step)
cycles += 1
if not result.successful():
return False
return True
这些是否隐式调用results.get()?让 1 个任务触发 N 个多个(独立的)子任务是否可行?我查找了类似的问题,但似乎没有一个与我在这里做的事情完全相同。
【问题讨论】: