Lite sent men jag har använt tornado-redis. Det fungerar med tornados ioloop och tornado.gen
modul
Installera tornadoredis
Den kan installeras från pip
pip install tornadoredis
eller med inställningsverktyg
easy_install tornadoredis
men det borde du verkligen inte göra. Du kan också klona förvaret och extrahera det. Kör sedan
python setup.py build
python setup.py install
Anslut till redis
Följande kod finns i din main.py eller motsvarande
redis_conn = tornadoredis.Client('hostname', 'port')
redis_conn.connect()
redis.connect anropas endast en gång. Det är ett blockerande samtal, så det bör anropas innan huvud-ioloopen startas. Samma anslutningsobjekt delas mellan alla hanterare.
Du kan lägga till det i dina programinställningar som
settings = {
redis = redis_conn
}
app = tornado.web.Application([('/.*', Handler),],
**settings)
Använd tornadoredis
Anslutningen kan användas i hanterare som self.settings['redis']
eller så kan den läggas till som en egenskap för BaseHandler-klassen. Dina begäranhanterare underklassar den klassen och får tillgång till egenskapen.
class BaseHandler(tornado.web.RequestHandler):
@property
def redis():
return self.settings['redis']
För att kommunicera med redis, tornado.web.asynchronous
och tornado.gen.engine
dekoratorer används
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}
Extra information
Fler exempel och andra funktioner som anslutningspooling och pipelines finns på github-repo.