tornado-redis
コードを見てください。Client.set
メソッドには次の定義があります。
def set(self, key, value, callback=None):
self.execute_command('SET', key, value, callback=callback)
そうです、それはコールバックを取り、で使用することができますgen.Task
。
非同期で書く正しい方法:
- を使用して、問題で説明した方法
gen
。
- ちなみに、githubの例で説明されています。
githubの例:
c = tornadoredis.Client()
c.connect()
def on_set(result):
log.debug("set result: %s" % result)
c.set('foo', 'Lorem ipsum #1', on_set)
c.set('bar', 'Lorem ipsum #2', on_set)
c.set('zar', 'Lorem ipsum #3', on_set)
genモジュールでクラスを分離します。
class MyRedisWrapper(object):
@gen.engine
def set(self, key, value):
yield tornado.gen.Task(t.set, key, value)
r = MyRedisWrapper()
class MyHandler(tornado.web.RequestHandler):
def get(self):
r.set('key', 'value') #It will work, but not sure about efficiency.