1

Python を使用して、基本的に非常に大きな JSON ファイル (約 420kB) のデータを投稿しようとしています。問題は、ローカル サーバーに投稿するときは問題なく動作しますが、外部サーバーではタイムアウトになることです。コードは次のようになります。

headers = {
"Content-Type": "application/json",
"Accept": "application/json"
};

response, content = httplib2.Http().request( 
    uri="http://%s:%s/json" % (host, port), method='POST',
    headers=headers, 
    body=json_string )

そして、私が得るエラーは次のようなものです:

socket.error: [Errno 60] Operation timed out

これについて何か考えはありますか?ソケット接続がローカルでタイムアウトしているのではないかと考えていましたが、これを修正する方法がわかりません。「ソケットのインポート」ライブラリからのすべてのソケット呼び出しは効果がないようです。

アップデート

いくつかの異なるネットワークで試してみましたが、スクリプトは現在使用している比較的遅いネットワーク以外のすべてのネットワークで動作するため、タイムアウトの問題のようです。したがって、選択は、何らかの方法でデータをストリーミングするか、タイムアウトを効果的に増やす方法を見つけることになります。

4

1 に答える 1

0

応答に必要な時間がデフォルトのタイムアウトよりも長いようです。でタイムアウトを指定してみてください

response, content = httplib2.Http().request( 
uri="http://%s:%s/json" % (host, port), method='POST',
headers=headers, 
body=json_string , timeout=100 ) (set the time as required)

または、応答をもたらすのに十分な大きさのソケットタイムアウトを設定できます

import socket
timeout = 100 (set the time as required)
socket. setdefaulttimeout(timeout)
于 2013-06-12T07:08:36.510 に答える