私は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 の理由????