Форум сайта python.su
Читаю книгу по tornado. С асинхронностью более менее понятно.
Но что если я буду использовать tornado в блокирующем стиле. В книге написано, если я запущу
1 инстанс торнадо и запрос будет долго обрабатываться, то остальные в это время буду ждать.
Или например я запущу 4 инстанса, проксирую их через nginx, и если эти 4 инстанса будут заняты обработкой долгих запросов, а запросов будет намного больше, то остальные будут ждать?
Все верно написано в книге или я что-то не понял?
И если все верно - то что делать? Запускать больше инстансов? Или как-то еще можно. Речь идет о блокирующем варианте.
Офлайн
> Все верно написано в книге или я что-то не понял?
Верно
> И если все верно - то что делать? Запускать больше инстансов?
Это улучшит ситуацию но лучше использовать асинхронные методы вместо блокирующих
> Или как-то еще можно. Речь идет о блокирующем варианте.
Использовать мультипоточный фреймворк вместо асинхронного
Так же можно блокирующие “превратить”/завернуть в асинхронные, например их можно отрабатывать в доп. потоках, но это не хороший путь, можно сделать отдельный процесс по обработке блокирующих запросов и асинхронно с ним работать.
Это так, в общем, все зависит от конкретной задачи.
Офлайн
немного поискал различные решения и нашел вот что:
https://github.com/mopub/greenlet-tornado
смысл этой штуки, пишем код в синхронном стиле - если надо посетить какой-то url во время обработки и не заблокировать tornado
можно это как-то приспособить для соединения с базами данных?
Отредактировано vlad0405 (Фев. 16, 2013 22:38:02)
Офлайн
Офлайн
на stackoverflow есть еще несколько топиков по поводу использования gevent совместно с tornado.
Если для небольшого проекта можно и колбеки писать, то для крупного проекта это может быть утомительно.
Кто нибудь использует gevent совместно с tornado чтобы handlers были в синхронном стиле?
И какие минусы от использования gevent можно получить?
Офлайн
vlad0405Я особо не вникал, но одну из реализаций видел, там gevent в отдельный поток заворачивается и в основном потоке сам торнадо, т.е. питону придется метаться между потоками, что может негативно повлиять на производительность.
И какие минусы от использования gevent можно получить?
Офлайн
Значит придется сначала попробовать на мелком проекте.
Всем спасибо за ответы!
Офлайн