Малко късно, но използвах tornado-redis. Работи с ioloop на tornado и tornado.gen
модул
Инсталирайте tornadoredis
Може да се инсталира от pip
pip install tornadoredis
или с инструменти за настройка
easy_install tornadoredis
но наистина не бива да правиш това. Можете също да клонирате хранилището и да го извлечете. След това стартирайте
python setup.py build
python setup.py install
Свържете се с redis
Следният код влиза във вашия main.py или еквивалентен
redis_conn = tornadoredis.Client('hostname', 'port')
redis_conn.connect()
redis.connect се извиква само веднъж. Това е блокиращо повикване, така че трябва да бъде извикано преди стартиране на главния ioloop. Един и същ обект на връзка се споделя между всички манипулатори.
Можете да го добавите към настройките на приложението си като
settings = {
redis = redis_conn
}
app = tornado.web.Application([('/.*', Handler),],
**settings)
Използвайте tornadoredis
Връзката може да се използва в манипулатори като self.settings['redis']
или може да се добави като свойство на класа BaseHandler. Вашите манипулатори на заявки подкласват този клас и имат достъп до свойството.
class BaseHandler(tornado.web.RequestHandler):
@property
def redis():
return self.settings['redis']
За комуникация с redis, tornado.web.asynchronous
и tornado.gen.engine
се използват декоратори
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}
Допълнителна информация
Още примери и други функции, като обединяване на връзки и тръбопроводи, можете да намерите в репото на github.