2016-10-16 4 views
1

У меня есть приложение Eve с торнадо.Неблокирующие звонки с использованием Tornado и Python Eve

http_server = HTTPServer(WSGIContainer(app)) 
http_server.listen(5000) 
IOLoop.instance().start() 

Я делаю пост вызов моего API, который занимает много времени и отправляет пользователю письмо, когда процесс будет сделано. Как заблокировать вызов, чтобы пользователь не мог ждать.

Благодаря DC

ответ

1

Ева написана в термосе так по дизайну он блокирует код и нет простого способа сделать это волшебно неблокирующим. Запуск вашего проекта в торнадо не поможет. Тем не менее, вы можете использовать gunicorn или hendrix, который может разветвить ваше приложение wsgi, действовать как прокси-сервер и заставлять его выглядеть так, как будто ваш проект работает неблокирующимся образом. Но я рекомендую использовать async/threaded task runner (что-то вроде celery) для отправки почты. Этот метод потребует, чтобы вы переписали свои функции рассылки с помощью диспетчера задач. Надеюсь, это поможет, если не просьба предоставить еще несколько примеров того, что делает ваш код, и, может быть, мы сможем помочь.

+0

Спасибо. Да, я прошел этот маршрут. Прекрасно работает. Принял некоторое время, чтобы понять. –

 Смежные вопросы

  • Нет связанных вопросов^_^