sql >> Database >  >> NoSQL >> Redis

Wat is de juiste manier om de Redis-verbinding in Tornado af te handelen? (Async - Pub/Sub)

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.



  1. Een overzicht van WiredTiger Storage Engine voor MongoDB

  2. Query's met mangoest en dadels

  3. Misbruik cURL om te communiceren met Redis

  4. MongoDB jsonSchema validatie additionalProperties