【发布时间】:2016-01-21 16:45:33
【问题描述】:
我有一个 celery 任务调用另一个 remote 任务(它在另一个 celery 应用程序上,在另一个服务器上......)。 当我尝试从我的任务中 .get() 远程任务的结果时,如下所示:
@app.task()
def my_local_task():
result_from_remote = app.send_task('remote_task', [arg1, arg2])
return result_from_remote.get()
我收到此错误:
RuntimeWarning: Never call result.get() within a task! See http://docs.celeryq.org/en/latest/userguide/tasks.html#task-synchronous-subtasks
In Celery 3.2 this will result in an exception being
raised instead of just being a warning.
warnings.warn(RuntimeWarning(E_WOULDBLOCK))
基本上我希望我的任务是“同步的”——我希望它等待远程任务的结果,我可以接受。
我可以告诉 celery 可以吗? 当然有链接的解决方案,除了不可能链接远程任务。调用远程任务的唯一方法是使用 app.send_task,它返回一个 AsyncResult,并且我无法链接,因为我需要任务函数本身..
【问题讨论】:
-
我打开了一个关于它的错误:github.com/celery/celery/issues/3498
-
Celery