Phi*_*tua 8 python django celery celery-task django-rest-framework
我有一个 celery 任务,它将数据发送到另一个服务。我已将芹菜任务添加send_inventory_request
到RequestSupplyStock
基于类的视图中。当我发帖时,我应该首先从 celery 任务获取结果,然后继续并返回响应。我想首先等待 celery 任务的结果,然后从 post 方法返回响应,这是实现此目的的正确方法。
@app.task
def send_inventory_request(payload,token):
auth = {'authorization':token}
HEADERS.update(auth)
url = PROCUREMENT_SUPPLY_STOCK_REQUESTS_URL
res = requests.post(url,json=payload,headers=HEADERS)
inventory_request_data = res.json()
x= logger.info('Supply Stock Request {0} + {1}'.format(payload,token))
print(x)
return inventory_request_data
Run Code Online (Sandbox Code Playgroud)
class RequestSupplyStock(generics.CreateAPIView):
def post(self, request, format=None):
........
send_inventory_request.delay(payload,get_token(request))
.........
return Response(status=status.HTTP_201_CREATED)
Run Code Online (Sandbox Code Playgroud)
可以使用 celery wait,但不推荐
等待任务内的任务可能会导致死锁。请阅读避免启动同步子任务。
task = send_inventory_request.delay(payload,get_token(request))
result = task.wait(timeout=None, interval=0.5)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
19873 次 |
最近记录: |