Подтвердить что ты не робот

Зачем использовать Tornado и Flask вместе?

Насколько я могу судить, Tornado - это сервер и инфраструктура в одном. Мне кажется, что использование Flask и Tornado вместе подобно добавлению другого слоя абстракции (больше накладных расходов). Почему люди используют Flask и Tornado вместе, каковы преимущества?

4b9b3361

Ответ 1

Согласно этому вопросу, это потому, что Flask блокирует, а Tornado не блокирует.

Если кто-то использует Tornado в качестве сервера WSGI и Flask для URL-маршрутизации + шаблонов, не должно быть никаких накладных расходов. При таком подходе вы не используете веб-сервер Flask, поэтому на самом деле нет дополнительного уровня абстракции.

Однако, если кто-то использует Flask только для шаблонов, они могут использовать Tornado с Jinja2, который является механизмом шаблонов, который использует Flask.

Ответ 2

Я всегда думал, что использование Flask и Tornado вместе было глупо, но на самом деле это имеет смысл. Однако это добавляет сложности; мое предпочтение было бы просто использовать Tornado, но если вы привязаны к Flask, то эта настройка работает.

Колба (как сообщается) очень приятна в использовании и проще, чем Tornado. Тем не менее, Flask требует сервер WSGI для производства (или FCGI, но это сложнее). Tornado довольно просто настроить как сервер WSGI:

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()

В этой ситуации разработчику просто нужно беспокоиться о приложении Flask. Торнадо просто действует как сервер.

Также можно обрабатывать некоторые запросы (например, websockets, которые не играют хорошо с WSGI), используя Tornado, и все еще выполняют большую часть вашей работы в Flask. Теоретически вы получите простоту Flask с асинхронной производительностью Tornado.

Ответ 3

вместо использования Apache в качестве сервера, вы будете использовать Tornado (конечно, как блокирующий сервер из-за синхронного характера WSGI).

Ответ 4

Используйте каждый для того, что лучше, но имейте в виду, что микс не всегда дает прирост производительности, который вы ищете.

Этот тест, например, https://gist.github.com/andreif/6088558, задает вопрос о том, какая комбинация фреймворков быстрее, вы должны адаптировать пример к своему основному варианту использования. В этом примере колба + торнадо не дают ожидаемого прироста производительности.