Un peu tard mais j'utilise tornado-redis. Cela fonctionne avec le ioloop de tornado et le tornado.gen
modules
Installer tornadoredis
Il peut être installé à partir de pip
pip install tornadoredis
ou avec setuptools
easy_install tornadoredis
mais tu ne devrais vraiment pas faire ça. Vous pouvez également cloner le référentiel et l'extraire. Puis lancez
python setup.py build
python setup.py install
Se connecter à redis
Le code suivant va dans votre main.py ou équivalent
redis_conn = tornadoredis.Client('hostname', 'port')
redis_conn.connect()
redis.connect n'est appelé qu'une seule fois. Il s'agit d'un appel bloquant, il doit donc être appelé avant de démarrer l'ioloop principal. Le même objet de connexion est partagé entre tous les gestionnaires.
Vous pouvez l'ajouter aux paramètres de votre application comme
settings = {
redis = redis_conn
}
app = tornado.web.Application([('/.*', Handler),],
**settings)
Utiliser tornadoredis
La connexion peut être utilisée dans les gestionnaires comme self.settings['redis']
ou il peut être ajouté en tant que propriété de la classe BaseHandler. Vos gestionnaires de requêtes sous-classent cette classe et accèdent à la propriété.
class BaseHandler(tornado.web.RequestHandler):
@property
def redis():
return self.settings['redis']
Pour communiquer avec redis, le tornado.web.asynchronous
et le tornado.gen.engine
les décorateurs sont utilisés
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}
Informations supplémentaires
Plus d'exemples et d'autres fonctionnalités telles que le regroupement de connexions et les pipelines peuvent être trouvés sur le référentiel github.