Как объединить Celery с asyncio для асинхронной обработки HTTP-запросов?
Как получать асинхронные HTTP-запросы и обрабатывать их асинхронно с помощью celery? Вот что я пробовал, правильный ли это способ объединить async с celery, чтобы я мог получать асинхронные HTTP запросы и обрабатывать их асинхронно
Урл:
urlpatterns = [
path('api/example/', example, name='example'),
]
В файле views.py есть
async def example(request):
res = await process_data(request)
json_data = json.loads(res.content)
return render(request, "index.html", {"task_id": json_data["task_id"],
"task_status": json_data["task_status"]})
async def process_data(request):
result = some_CPU_heavy_function.delay("yes")
return JsonResponse({"task_id": result.id,
"task_status": result.status},
status=status.HTTP_200_OK)
@shared_task
def some_CPU_heavy_function(some_data):
return {"reply": "yes"}
А команда из Docker -
command: gunicorn server.asgi:application --bind 0.0.0.0:8000 -w 17 -k uvicorn.workers.UvicornWorker