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

Redis-py с gevent

Можно ли использовать библиотеку redis-py с gevent?

Есть ли у кого-нибудь опыт работы с библиотекой redis-py с gevent? Есть ли рабочий пример?

Играют ли они вместе? Существуют ли какие-либо меры предосторожности или хаки, чтобы заставить их работать в масштабе?

Вопрос другими словами:

чтобы соединения redis-py использовали gevent greenlets, нужно ли мне делать что-либо особенное, кроме сокетов monkeypatch?

from gevent import monkey

monkey.patch_all()

то используйте redis-py как обычно?

4b9b3361

Ответ 1

Да, redis-py отлично работает с gevent.

Вы можете проверить мой ответ на следующий вопрос: вы найдете пример и некоторые замечания.

redis + gevent - Плохая производительность - что я делаю неправильно?

Основная ловушка заключается в том, чтобы считать, что поскольку gevent является асинхронным, а сокеты обезврежены, стоимость округлений до Redis волшебным образом исчезнет. Это неправильно.

gevent в основном интересен, когда используется несколько соединений одновременно, так что системные вызовы цикла событий могут быть факторизованы. Если код пользователя генерирует много синхронных обращений к Redis на небольшое количество подключений, это будет связано с задержкой, даже если эти соединения управляются асинхронным способом gevent.

Таким образом, даже с gevent, конвейерная обработка всегда должна использоваться для оптимизации затрат на связь.