Найти - Пользователи
Полная версия: вопрос по tornado
Начало » Web » вопрос по tornado
1
vlad0405
Читаю книгу по tornado. С асинхронностью более менее понятно.
Но что если я буду использовать tornado в блокирующем стиле. В книге написано, если я запущу
1 инстанс торнадо и запрос будет долго обрабатываться, то остальные в это время буду ждать.
Или например я запущу 4 инстанса, проксирую их через nginx, и если эти 4 инстанса будут заняты обработкой долгих запросов, а запросов будет намного больше, то остальные будут ждать?

Все верно написано в книге или я что-то не понял?
И если все верно - то что делать? Запускать больше инстансов? Или как-то еще можно. Речь идет о блокирующем варианте.
o7412369815963
> Все верно написано в книге или я что-то не понял?
Верно

> И если все верно - то что делать? Запускать больше инстансов?
Это улучшит ситуацию но лучше использовать асинхронные методы вместо блокирующих

> Или как-то еще можно. Речь идет о блокирующем варианте.
Использовать мультипоточный фреймворк вместо асинхронного

Так же можно блокирующие “превратить”/завернуть в асинхронные, например их можно отрабатывать в доп. потоках, но это не хороший путь, можно сделать отдельный процесс по обработке блокирующих запросов и асинхронно с ним работать.

Это так, в общем, все зависит от конкретной задачи.
vlad0405
немного поискал различные решения и нашел вот что:

https://github.com/mopub/greenlet-tornado

смысл этой штуки, пишем код в синхронном стиле - если надо посетить какой-то url во время обработки и не заблокировать tornado

можно это как-то приспособить для соединения с базами данных?
d1ffuz0r
https://bitbucket.org/zzzeek/green_sqla/
vlad0405
на stackoverflow есть еще несколько топиков по поводу использования gevent совместно с tornado.
Если для небольшого проекта можно и колбеки писать, то для крупного проекта это может быть утомительно.

Кто нибудь использует gevent совместно с tornado чтобы handlers были в синхронном стиле?
И какие минусы от использования gevent можно получить?

o7412369815963
vlad0405
И какие минусы от использования gevent можно получить?
Я особо не вникал, но одну из реализаций видел, там gevent в отдельный поток заворачивается и в основном потоке сам торнадо, т.е. питону придется метаться между потоками, что может негативно повлиять на производительность.

Сам по себе gevent/libevent прикольный, но на счет использования в больших приложениях слышал опасения, мол там полный хак, что не на 100% надежно и если глюканет, то выловить баги будет очень тяжело.

Я рассматривал его как обработчик в виде отдельного процесса к торнадо.
vlad0405
Значит придется сначала попробовать на мелком проекте.
Всем спасибо за ответы!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB