看看tornado-redis
的代碼。 Client.set
方法有以下defenition:
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)
與根模塊單獨的類:
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.
什麼是不明確的嗎?代碼示例在你的問題看起來不錯。 – 2012-08-02 07:05:49