Een beetje laat, maar ik gebruik tornado-redis. Het werkt met de ioloop van tornado en de tornado.gen
module
Installeer tornadoredis
Het kan worden geïnstalleerd vanaf pip
pip install tornadoredis
of met setuptools
easy_install tornadoredis
maar dat moet je echt niet doen. U kunt de repository ook klonen en uitpakken. Ren dan
python setup.py build
python setup.py install
Verbinden met redis
De volgende code komt in uw main.py of equivalent
redis_conn = tornadoredis.Client('hostname', 'port')
redis_conn.connect()
redis.connect wordt maar één keer aangeroepen. Het is een blokkerende oproep, dus deze moet worden aangeroepen voordat de hoofd-ioloop wordt gestart. Hetzelfde verbindingsobject wordt gedeeld tussen alle handlers.
Je zou het kunnen toevoegen aan je applicatie-instellingen zoals
settings = {
redis = redis_conn
}
app = tornado.web.Application([('/.*', Handler),],
**settings)
Gebruik tornadoredis
De verbinding kan in handlers worden gebruikt als self.settings['redis']
of het kan worden toegevoegd als een eigenschap van de BaseHandler-klasse. Uw verzoekbehandelaars subclasseren die klasse en krijgen toegang tot de eigenschap.
class BaseHandler(tornado.web.RequestHandler):
@property
def redis():
return self.settings['redis']
Om te communiceren met redis, de tornado.web.asynchronous
en de tornado.gen.engine
er worden decorateurs gebruikt
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 informatie
Meer voorbeelden en andere functies zoals pooling van verbindingen en pijplijnen zijn te vinden in de github-repo.