Un poco tarde pero he estado usando tornado-redis. Funciona con ioloop de tornado y tornado.gen
módulo
Instalar tornadoredis
Se puede instalar desde pip
pip install tornadoredis
o con herramientas de configuración
easy_install tornadoredis
pero realmente no deberías hacer eso. También puede clonar el repositorio y extraerlo. Entonces corre
python setup.py build
python setup.py install
Conectarse a redis
El siguiente código va en su main.py o equivalente
redis_conn = tornadoredis.Client('hostname', 'port')
redis_conn.connect()
redis.connect se llama solo una vez. Es una llamada de bloqueo, por lo que debe llamarse antes de iniciar el ioloop principal. El mismo objeto de conexión se comparte entre todos los controladores.
Puede agregarlo a la configuración de su aplicación como
settings = {
redis = redis_conn
}
app = tornado.web.Application([('/.*', Handler),],
**settings)
Usar tornadoredis
La conexión se puede usar en controladores como self.settings['redis']
o se puede agregar como una propiedad de la clase BaseHandler. Sus controladores de solicitudes subclasifican esa clase y acceden a la propiedad.
class BaseHandler(tornado.web.RequestHandler):
@property
def redis():
return self.settings['redis']
Para comunicarse con redis, el tornado.web.asynchronous
y el tornado.gen.engine
se utilizan decoradores
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}
Información adicional
Se pueden encontrar más ejemplos y otras características como agrupación de conexiones y canalizaciones en el repositorio de github.