Lidt sent, men jeg har brugt tornado-redis. Det virker med tornados ioloop og tornado.gen
modul
Installer tornadoredis
Det kan installeres fra pip
pip install tornadoredis
eller med opsætningsværktøjer
easy_install tornadoredis
men det burde du virkelig ikke gøre. Du kan også klone depotet og udtrække det. Kør derefter
python setup.py build
python setup.py install
Opret forbindelse til redis
Følgende kode går i din main.py eller tilsvarende
redis_conn = tornadoredis.Client('hostname', 'port')
redis_conn.connect()
redis.connect kaldes kun én gang. Det er et blokerende opkald, så det skal kaldes, før du starter hoved-ioloopen. Det samme forbindelsesobjekt er delt mellem alle behandlerne.
Du kan tilføje det til dine applikationsindstillinger som
settings = {
redis = redis_conn
}
app = tornado.web.Application([('/.*', Handler),],
**settings)
Brug tornadoredis
Forbindelsen kan bruges i handlere som self.settings['redis']
eller det kan tilføjes som en egenskab for BaseHandler-klassen. Dine anmodningsbehandlere underklasserer den klasse og får adgang til egenskaben.
class BaseHandler(tornado.web.RequestHandler):
@property
def redis():
return self.settings['redis']
For at kommunikere med redis skal du bruge tornado.web.asynchronous
og tornado.gen.engine
der bruges dekoratører
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}
Ekstra information
Flere eksempler og andre funktioner såsom forbindelsespooling og pipelines kan findes på github-repoen.