多亏了this post,我正在试用异步驱动程序tornado-redis。从演示(Github example)中,它展示了如何使用这个库进行异步gets,但我不清楚这些集是否也是异步的(它们确实有一个回调函数)。
那么,如果可能的话,使用tornado-redis进行异步写入的正确方式是什么?会是这样的吗:
@tornado.web.asynchronous
@tornado.gen.engine
def post(self):
...
yield tornado.gen.Task(t.set,'key', 'value')发布于 2012-08-02 15:19:09
看看tornado-redis代码。Client.set方法有以下定义:
def set(self, key, value, callback=None):
self.execute_command('SET', key, value, callback=callback)所以,是的,它接受回调,并且可以与gen.Task一起使用。
异步编写的正确方法:
您正在讨论的使用gen的
来自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.https://stackoverflow.com/questions/11769965
复制相似问题