Документы Flask, используемые для описания того, как это сделать, но были удалены из-за заметок производительности ниже. Вам не нужен Tornado для обслуживания вашего приложения Flask, если весь ваш асинхронный код уже не написан в Tornado.
В этом документе также описаны торнадо о WSGI . Они также содержат большое предупреждение о том, что это, вероятно, менее эффективно, чем использование выделенного сервера приложений WSGI, такого как uWSGI, Gunicorn или mod_wsgi.
WSGI - это синхронный интерфейс , в то время как модель параллелизма Tornado основана на однопоточном асинхронном выполнении. Это означает, что запуск WSGI-приложения с помощью
blockquote>WSGIContainer
Tornado менее масштабируемый , чем запуск того же приложения на многопоточном WSGI-сервере, напримерgunicorn
илиuwsgi
. ИспользуйтеWSGIContainer
только тогда, когда есть преимущества для объединения Tornado и WSGI в том же процессе, что перевешивает уменьшенную масштабируемость.Например, вместо использования Gunicorn:
gunicorn -w 4 app:app
После всего этого, если вы действительно все еще хотите использовать Tornado, вы можете использовать шаблон, описанный в документах:
from tornado.wsgi import WSGIContainer from tornado.httpserver import HTTPServer from tornado.ioloop import IOLoop from yourapplication import app http_server = HTTPServer(WSGIContainer(app)) http_server.listen(5000) IOLoop.instance().start()