看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.