Un po' in ritardo, ma ho usato tornado-redis. Funziona con ioloop di tornado e tornado.gen
modulo
Installa tornadoredis
Può essere installato da pip
pip install tornadoredis
o con gli strumenti di configurazione
easy_install tornadoredis
ma davvero non dovresti farlo. Puoi anche clonare il repository ed estrarlo. Quindi esegui
python setup.py build
python setup.py install
Connetti a redis
Il codice seguente va nel tuo main.py o equivalente
redis_conn = tornadoredis.Client('hostname', 'port')
redis_conn.connect()
redis.connect viene chiamato solo una volta. È una chiamata di blocco, quindi dovrebbe essere chiamata prima di avviare l'ioloop principale. Lo stesso oggetto di connessione è condiviso tra tutti i gestori.
Potresti aggiungerlo alle impostazioni dell'applicazione come
settings = {
redis = redis_conn
}
app = tornado.web.Application([('/.*', Handler),],
**settings)
Usa tornadoredis
La connessione può essere utilizzata nei gestori come self.settings['redis']
oppure può essere aggiunto come proprietà della classe BaseHandler. I gestori delle richieste sottoclasse quella classe e accedono alla proprietà.
class BaseHandler(tornado.web.RequestHandler):
@property
def redis():
return self.settings['redis']
Per comunicare con redis, il tornado.web.asynchronous
e il tornado.gen.engine
vengono utilizzati decoratori
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}
Informazioni aggiuntive
Altri esempi e altre funzionalità come pool di connessioni e pipeline sono disponibili nel repository github.