我有一个芹菜任务调用另一个任务remote任务(它在不同的芹菜应用程序上,在另一台服务器上......)。
当我尝试从我的任务中 .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))
基本上我希望我的任务是“同步的” - 我希望它等待远程任务的结果,我对此表示同意。
我可以告诉芹菜没关系吗?
当然有链接的解决方案,但不可能链接远程任务。调用远程任务的唯一方法是使用 app.send_task,它返回 AsyncResult,并且我无法链接,因为我需要任务函数本身。
如果您知道自己正在做的事情是安全的,这里有一个片段可以消除警告:
from celery.result import allow_join_result
with allow_join_result():
result.get()
source https://github.com/celery/celery/issues/3498#issuecomment-252705043
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)