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 客户端程序中,循环应该 运行 直到所有工作完成并且程序准备好退出。
以下是龙卷风的片段 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 客户端程序中,循环应该 运行 直到所有工作完成并且程序准备好退出。