根据网上的几个例子,为了从同步代码中运行用tornado.gen.coroutine装饰的异步方法,你可以使用以下命令:
@tornado.gen.coroutine
def do_something():
do_something
if __name__ == "__main__":
tornado.ioloop.IOLoop.instance().run_sync(do_something)
但是如果你有coroutine方法的参数,有没有办法运行它?
答案 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))