Python tornado AsyncHttpClient 不发送任何请求

Python tornado AsyncHttpClient does not send any request

以下是龙卷风的片段 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 虽然工作正常。

我在 Macbook Python 3.6.1.

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

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

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

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