寻找一个演示使用tornado.gen.coroutine
的callback
参数的简单示例。文档说:
[
gen.coroutine
]装饰器的函数返回Future
。此外,可以使用callback
关键字参数调用它们,当它结算时将使用将来的结果调用它们。
从文档的用户指南中调整an example,我认为我可以这样做:
from tornado import gen
@gen.coroutine
def divide(x, y):
return x / y
@gen.coroutine
def good_call():
yield divide(1, 2)
good_call(callback=print)
我希望打印0.5
,但没有输出。
我发现了大量示例,展示了已弃用的gen.engine
装饰器,但gen.coroutine
上似乎没有那么多。在Python 3.5.1和Tornado 4.3上运行。
答案 0 :(得分:1)
你仍然需要启动IOLoop。如果您在脚本末尾添加tornado.ioloop.IOLoop.current().start()
,则会看到打印的输出(然后IOLoop
会永久运行。如果您希望它停止,您需要执行此操作所以从打印后的回调中获得。)
请注意,通常可以(并鼓励)仅使用协同程序和yield
编写Tornado应用程序,而不直接传递任何回调。