Python django芹菜get()用于获取任务的结果
我有一个对服务器的API调用,在那里我正在使用芹菜进行一些处理。芹菜的输出被传递回客户端 我曾经Python django芹菜get()用于获取任务的结果,python,django,asynchronous,celery,Python,Django,Asynchronous,Celery,我有一个对服务器的API调用,在那里我正在使用芹菜进行一些处理。芹菜的输出被传递回客户端 我曾经 som = task_async_get_cached_session.delay('session_123') print 'before' result = som.get(timeout=1) print 'after' 我看了看芹菜-l信息,任务成功了 在0.024465521s:{data:{session_123:something}}中成功 但是我的客户端没有得到响应,我设置了超时,
som = task_async_get_cached_session.delay('session_123')
print 'before'
result = som.get(timeout=1)
print 'after'
我看了看芹菜-l信息
,任务成功了
在0.024465521s:{data:{session_123:something}}中成功
但是我的客户端没有得到响应,我设置了超时,现在我得到了操作超时。()
当我查看日志跟踪时,只打印了之前的。我的问题是,当您希望将芹菜任务生成的结果发送给客户端时,如何使用芹菜而不使用get()
我知道get()?芹菜的真正用途是什么?有没有其他方法可以将我的API更改为异步的 用于设计检查任务状态并获得结果的函数
from celery.result import AsyncResult
def get_result(my_work):
work = AsyncResult(my_work.id)
if work.ready(): # check task state: true/false
try:
result = work.get(timeout=1)
return result
except:
pass
return "Please waiting result."
在本例中,假设我传递了{“status”:“Please waiting result.”,“taskId”:“123”}。然后,客户端在另一个API/状态/中使用此taskId以获得结果。。这是使服务器异步的唯一方法吗?是的,使用taskId
获得结果。您可以使用会话或数据库存储每个用户的taskId
。然后用户不需要自己记住这个id。因为可能MessageBroker在远程服务器上工作。:)