Я использую Flask для разработки веб-сервера в приложении python. Я достигаю этого сценария: клиент (он не будет браузером) отправляет запрос, сервер выполняет некоторую длинную задачу в фоновом режиме и по завершении отправляет ответ обратно клиенту асинхронно. Можно ли это сделать?Колба: асинхронный ответ клиенту
4
A
ответ
4
То, что вы просите, не может быть выполнено с помощью протокола HTTP. Каждый запрос получает ответ синхронно. Ближайшая вещь для достижения того, что вы хотите, будет такой:
Клиент отправляет запрос, и сервер немедленно отправляет идентификатор задания, а также запускает фоновое задание для этого длительного вычисления.
Клиент может затем опросить сервер для статуса, отправив идентификатор задания в новый запрос. Ответ снова немедленный и содержит статус работы, такой как «в процессе», «завершено», «неудачно» и т. Д. Сервер также может возвращать процент прогресса, который клиент может использовать для отображения индикатора выполнения.
Вы также можете реализовать веб-сокеты, но для этого потребуется сервер и клиент сокета.
Смежные вопросы
- 1. C# асинхронный сервер ответ
- 2. Что такое асинхронный ответ сервера?
- 3. Метод Meteor возвращает неопределенный клиенту (асинхронный)
- 4. Jersey Rest Асинхронный ответ
- 5. Джерси асинхронный многопоточный ответ?
- 6. JQuery и асинхронный ответ
- 7. Python Колба посылая ответ немедленно
- 8. Boost Asio асинхронный: сервер отправил сообщение клиенту
- 9. Отправить ответ клиенту в nodejs
- 10. ASHX немедленно отправить ответ клиенту
- 11. Налет ответ перед отправкой клиенту
- 12. Обработка параллелизма и асинхронный ответ
- 13. Как написать ответ xml-файла клиенту-клиенту rest в файл?
- 14. Пропустите HTTP-ответ клиенту в MVC 6
- 15. Пропустить необработанный ответ клиенту от asyncmongo
- 16. Потоковый ответ обратно клиенту из ServerResource
- 17. Как ответ от сервлета к клиенту?
- 18. Как вернуть ответ клиенту посреди обещания?
- 19. NodeJS отправить ответ XHR к недоступному клиенту
- 20. Отправлять HTTP-ответ клиенту без запроса всегда
- 21. Как узнать, когда ответ был отправлен клиенту?
- 22. php отправляет двоичный ответ curl клиенту
- 23. JSF: Как захватить ответ, который отправить клиенту
- 24. отправить ответ другому клиенту по обновлению модели
- 25. Tornado не отправляет ответ Ajax клиенту
- 26. Ответ от метеорита от сервера к клиенту
- 27. Модуль Apache C, как отправить ответ клиенту
- 28. Как можно подтвердить ответ сервлета java клиенту
- 29. Как отправить ответ сервера клиенту? (Сокеты Python)
- 30. Как отправить ответ клиенту с помощью socket.io?
В вашем вопросе есть противоречие: ответ (HTTP), который отправляется ** по завершении ** задачи, по определению не является асинхронным. Вероятно, вы хотите использовать два запроса/ответы, один для запуска задачи, а другой для получения данных. AFAIK, нет никакого способа сделать это, используя чистый HTTP, хотя вы могли бы использовать шаблон публикации/подписки, используя PubSubHubbub, или, как предположил @GamesBrainiac, websockets – goncalopp
Я думаю, что лучший способ сделать это - использовать веб-сокеты. –
Но клиент не браузер ... Я думаю, что лучший способ сделать это - это не делать это таким образом ... –