Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python django芹菜get()用于获取任务的结果_Python_Django_Asynchronous_Celery - Fatal编程技术网

Python django芹菜get()用于获取任务的结果

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}}中成功 但是我的客户端没有得到响应,我设置了超时,

我有一个对服务器的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}}中成功

但是我的客户端没有得到响应,我设置了超时,现在我得到了
操作超时。()

当我查看日志跟踪时,只打印了
之前的
。我的问题是,当您希望将芹菜任务生成的结果发送给客户端时,如何使用芹菜而不使用
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在远程服务器上工作。:)