2017-09-16 3 views
0

以下は竜巻documentationのスニペットです。Pythonの竜巻AsyncHttpClientはリクエストを送信しません

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を使用しています。

答えて

1

Tornadoは、すべてのタスクがIOLoopと呼ばれる単一のイベントループによってスケジュールされる非同期フレームワークです。あなたのプログラムの終了時に、置く:

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

ループの実行を開始し、AsyncHTTPClientは、URLを取得できるようになると。

IOLoopは永遠に実行されるため、IOLoop.stop()を呼び出すタイミングを決定するロジックを実装する必要があります。あなたのサンプルプログラムでは、handle_responseの底にIOLoop.stop()と呼んでください。実際のHTTPクライアントプログラムでは、すべての作業が完了してプログラムが終了する準備が整うまでループを実行する必要があります。

関連する問題