Python tornado AsyncHttpClient不发送任何请求

时间:2017-09-16 07:16:50

标签: python tornado

以下是龙卷风documentation的摘录。

def handle_response(response):
if response.error:
    print("Error: %s" % response.error)
else:
    print(response.body)

http_client = AsyncHTTPClient()
http_client.fetch("http://www.google.com/", handle_response)

但这不会向控制台打印任何内容。我尝试在最后添加time.sleep,但即使这样也没有打印。

此外,当我将上面的url更改为指向我的服务器时,它不会向我的服务器发送任何请求。 tornado.httpclient.HTTPClient可以正常工作。

我使用Python 3.6.1在Macbook上。

1 个答案:

答案 0 :(得分:1)

Tornado是一个异步框架,其中所有任务都由称为IOLoop的单个事件循环调度。在程序结束时,输入:

import tornado.ioloop
tornado.ioloop.IOLoop.current().start()

这将启动循环运行并允许AsyncHTTPClient获取URL。

IOLoop永远运行,因此您需要实现一些确定何时调用IOLoop.stop()的逻辑。在您的示例程序中,请致电IOLoop.stop()底部的handle_response。在真正的HTTP客户端程序中,循环应该运行,直到所有工作完成并且程序准备退出。