Есть ли у Django что-то похожее на ASP.NET MVC's Asynchronous Controller?Django асинхронные запросы
У меня есть некоторые запросы, которые будут обрабатывать работники сельдерея, но не займет много времени (несколько секунд). Я хочу, чтобы клиенты получили ответ после завершения работы. Я могу заставить функцию просмотра дождаться завершения задачи, но я беспокоюсь, что это наложит слишком много нагрузки на веб-сервер.
Разъяснение:
Вот поток, я могу сегодня
def my_view(request):
async = my_task.delay(params)
result = async.get()
return my_response(result)
async.get()
может занять несколько секунд - не слишком долго, так что клиент не может ждать ответа HTTP, чтобы получить обратно.
Этот код может привести к ненужной нагрузке на сервер. Что ASP.NET MVC-х AsynchronousController
обеспечивает, является возможность разорвать эту функцию в два, что-то похожее на это:
def my_view(request):
async = my_task.delay(params)
return DelayedResponse(async, lambda result=>my_response(result))
Это освобождает веб-сервер для обработки других запросов, пока операция асинхронной не делается. Как только это будет сделано, он выполнит выражение лямбда на результат, возвращая ответ.
Для получения дополнительной информации: http://docs.celeryproject.org/en/latest/reference/celery.html?highlight=chain#celery.chain – pynovice
Я не хочу задачу цепи. Я уточню. – zmbq