#python #tornado #eve
#python #tornado #eve
Вопрос:
У меня есть приложение Eve с Tornado.
http_server = HTTPServer(WSGIContainer(app))
http_server.listen(5000)
IOLoop.instance().start()
Я делаю post-вызов своего API, который занимает много времени и отправляет пользователю электронное письмо, когда процесс завершен.
Как я могу сделать вызов неблокирующим, чтобы пользователю не приходилось ждать.
Спасибо DC
Ответ №1:
Eve написан на Flask, поэтому по своей конструкции он блокирует код, и нет простого способа сделать его волшебным образом неблокирующим. Запуск вашего проекта eve в tornado также не поможет. Однако вы можете использовать gunicorn
or hendrix
, который может разветвлять ваше wsgi
приложение, действовать как прокси-сервер и создавать впечатление, что ваш проект работает неблокирующим образом. Но я рекомендую использовать асинхронный / потоковый запускатель задач (что-то вроде celery
) для отправки почты. Этот метод потребует от вас переписать ваши функции рассылки с помощью task runner. Я надеюсь, что это поможет, если нет, пожалуйста, предоставьте еще несколько примеров того, что делает ваш код, и, возможно, мы сможем помочь.
Комментарии:
1. Спасибо. Да, я прошел этот маршрут. Работает идеально. Мне потребовалось некоторое время, чтобы понять.