抱歉这个愚蠢的问题,我想了解在龙卷风中使用生成器替换回调的原因,生成器如何在非阻塞操作中有用?
我认为生成器仅在返回大量项目时才有用,因此为了节省内存,我们避免使用迭代器并逐个生成一个元素,那么如果只有一个元素要返回,非阻塞调用的好处在哪里(例如 http回复)?
如果我有这个简单的例子:
class GenAsyncHandler(tornado.web.RequestHandler):
@tornado.web.asynchronous
@tornado.gen.engine
def get(self):
http_client = tornado.httpclient.AsyncHTTPClient()
response = yield tornado.gen.Task(http_client.fetch, "http://www.google.fr")
self.write(str(response))
self.finish()
结果是:
HTTPResponse(code=200,request_time=0.4440000057220459,buffer=<_io.BytesIO object at 0x000000000316A728>,_body=None,time_info={},request=,effective_url='http://www.google.fr',headers={'X-Xss-Protection': '1; mode=block', 'Set-Cookie': 'PREF=ID=6e27eda171946585:FF=0:TM=1361200384:LM=1361200384:S=7VncGsz1u8j_UL1a; expires=Wed, 18-Feb-2015 15:13:04 GMT; path=/; domain=.google.fr,NID=67=qv6MUCQCGJ5mnofKWdySxo8NoThLfCr9oFlme8S95w2CNqQe__tW6ql3RzqItvfbFxzxCYLZ0OINzFvE7mIDJbXOjjhld0ahQrxfzizkdNhymcI9oAGK0dotqDHwhtR2; expires=Tue, 20-Aug-2013 15:13:04 GMT; path=/; domain=.google.fr; HttpOnly', 'Expires': '-1', 'Server': 'gws', 'Connection': 'close', 'Cache-Control': 'private, max-age=0', 'Date': 'Mon, 18 Feb 2013 15:13:04 GMT', 'P3p': 'CP="This is not a P3P policy! See http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657 for more info."', 'Content-Type': 'text/html; charset=ISO-8859-1', 'X-Frame-Options': 'SAMEORIGIN'},error=None)
这个结果是否被拆分为“暂停”?