Etwas spät, aber ich habe Tornado-Redis verwendet. Es funktioniert mit Tornados ioloop und tornado.gen
Modul
Tornadoredis installieren
Es kann von pip installiert werden
pip install tornadoredis
oder mit Setuptools
easy_install tornadoredis
aber das sollte man wirklich nicht machen. Sie können das Repository auch klonen und extrahieren. Dann ausführen
python setup.py build
python setup.py install
Mit redis verbinden
Der folgende Code wird in Ihre main.py oder eine gleichwertige Datei eingefügt
redis_conn = tornadoredis.Client('hostname', 'port')
redis_conn.connect()
redis.connect wird nur einmal aufgerufen. Es ist ein blockierender Aufruf, daher sollte er vor dem Start des Haupt-IOLoops aufgerufen werden. Dasselbe Verbindungsobjekt wird von allen Handlern gemeinsam genutzt.
Sie können es Ihren Anwendungseinstellungen wie
hinzufügensettings = {
redis = redis_conn
}
app = tornado.web.Application([('/.*', Handler),],
**settings)
Tornadoredis verwenden
Die Verbindung kann in Handlern als self.settings['redis']
verwendet werden oder es kann als Eigenschaft der BaseHandler-Klasse hinzugefügt werden. Ihre Request-Handler bilden eine Unterklasse dieser Klasse und greifen auf die Eigenschaft zu.
class BaseHandler(tornado.web.RequestHandler):
@property
def redis():
return self.settings['redis']
Um mit Redis zu kommunizieren, muss der tornado.web.asynchronous
und die tornado.gen.engine
Dekorateure werden verwendet
class SomeHandler(BaseHandler):
@tornado.web.asynchronous
@tornado.gen.engine
def get(self):
foo = yield gen.Task(self.redis.get, 'foo')
self.render('sometemplate.html', {'foo': foo}
Zusätzliche Informationen
Weitere Beispiele und andere Funktionen wie Verbindungspooling und Pipelines finden Sie im Github-Repo.