2012-06-07 14 views
21

Czy biblioteka Redis-Py może być używana z gevent?redis-py z geventem

Czy ktoś ma doświadczenie w prowadzeniu biblioteki redis-py z gevent? Czy istnieje działający przykład?

Czy grają razem sympatycznie? Czy są jakieś środki ostrożności lub hacki, aby zmusić ich do pracy na dużą skalę?

Pytanie w innym słowy:

aby Redis-Py połączenia używać gevent greenlets, muszę zrobić coś specjalnego innego niż gniazd monkeypatch?

from gevent import monkey 

monkey.patch_all() 

następnie użyć Redis-Py jak zwykle?

Odpowiedz

17

Tak, redis-py działa dobrze z gevent.

Możesz sprawdzić moją odpowiedź na następujące pytanie: znajdziesz przykład i kilka uwag.

redis + gevent - Poor performance - what am I doing wrong?

Głównym pułapka jest wzięcie pod uwagę, że ze względu gevent jest asynchroniczne i gniazda są monkeypatched, koszty powrotu z do Redis będzie magicznie znikają. To jest całkiem błędne.

gevent jest interesujący głównie wtedy, gdy używanych jest kilka połączeń jednocześnie, dzięki czemu wywołania systemowe pętli zdarzeń mogą zostać zsumowane. Jeśli kod użytkownika generuje wiele synchronicznych zwrotów do Redis na małej liczbie połączeń, będzie to wymagało opóźnień, nawet jeśli te połączenia są zarządzane asynchronicznie przez gevent.

Tak więc nawet w przypadku geowirów należy zawsze używać potokowania w celu optymalizacji kosztów komunikacji.

+0

Cześć kochanie, właściwie nie zależy mi zbytnio na opóźnieniach, to, na czym mi zależy, to posiadanie ogromnej liczby połączeń, bez wątków i procesów heavyweght. – Joseph

+0

Jaki jest wniosek? Zamierzam również użyć gevent z redis. Jakiś sens, żeby pokazać przykład? – Mark