0

私はTornadoにコードのこの部分を持っています:

............
como_url = "".join(['http://', options.como_address, ':', options.como_port, 
                        '/ztc_config?netid=0&opcode_group=0&opcode=0&start=-20s&end=-1s'])

http_client = AsyncHTTPClient()
response = yield tornado.gen.Task(http_client.fetch, como_url)

ret = {}
if response.error:
    ret['error'] = 'Error while retrieving the response'
    self.write(tornado.escape.json_encode(ret))
    self.finish()
else:
.........

コマンドをセンサーに送信し、センサーからの応答を取得するためにデータベースに http 要求を送信した後。そして、応答を受け取り、いくつかのアクションを実行した後。

ここで、応答を取得するために http 要求を 2 回送信する必要があります。初めてセンサーにコマンドを送信すると、要求が速すぎて応答を受信できないようなものです。

コマンドを再送信した後、応答は正しく、すべて問題ありません。

なんで?リクエストのタイムアウトがわからない... または、Tornado でリクエストを 2 回再送信するにはどうすればよいですか?

ありがとうございました。

編集

私はこのように書きました:

como_url = "".join(['http://', options.como_address, ':', options.como_port, 
                        '/ztc_config?netid=0&opcode_group=0&opcode=0&start=-20s&end=-1s'])

    http_client = AsyncHTTPClient()
    #response = yield tornado.gen.Task(http_client.fetch, como_url)
    request = tornado.httpclient.HTTPRequest(url=como_url, connect_timeout=5.0, request_timeout=2.0)
    response = yield tornado.gen.Task(http_client.fetch, request)
    print response

そして私は得る:

HTTPResponse(code=200,request_time=0.30609703063964844,buffer=<io.BytesIO object at 0x276a1d0>,_body=None,time_info={},request=<tornado.httpclient.HTTPRequest object at 0x2764310>,effective_url='http://131.114.52.207:44444/ztc_config?netid=0&opcode_group=0&opcode=0&start=-20s&end=-1s',headers={'Content-Type': 'text/plain'},error=None)

request_time=0 の理由????

4

0 に答える 0