Tornado,使用同步代码中的参数运行coroutine方法

时间:2015-07-20 06:05:50

标签: asynchronous arguments tornado coroutine

根据网上的几个例子,为了从同步代码中运行用tornado.gen.coroutine装饰的异步方法,你可以使用以下命令:

@tornado.gen.coroutine
def do_something():
   do_something

if __name__ == "__main__":
    tornado.ioloop.IOLoop.instance().run_sync(do_something)

但是如果你有coroutine方法的参数,有没有办法运行它?

2 个答案:

答案 0 :(得分:8)

是:

@tornado.gen.coroutine
def do_something(arg):
   do_something

if __name__ == "__main__":
    tornado.ioloop.IOLoop.instance().run_sync(lambda: do_something(1))

答案 1 :(得分:1)

使用partial:

import functools
import tornado.gen

@tornado.gen.coroutine
def do_something(arg):
   do_something

if __name__ == "__main__":
    tornado.ioloop.IOLoop.instance().run_sync(
         functools.partial(do_something, 1))