0

中央サーバーにデータを再帰的に送信するPythonスクリプトがあります。送信する新しいデータがキューに入れられるまで、ルーターはスリープ状態になります。ウェイクアッププロセスには約20秒かかるため、次のように接続を確立しようとしました。

TIMEOUT = 100
def connect():
    return HTTPConnection(HOST, timeout=TIMEOUT)

connection = connect()

さて、関数HTTPConnection()は、タイムアウトが経過したときにのみ返されることを期待していますが、これは実行されていることではありません。私の関数は3秒ほど後に戻り、接続エラーが発生します。何故ですか?独自のタイムアウトループを作成する必要がありますか?

ありがとう、ロン

4

1 に答える 1

0

さて、私が問題を解決した方法は、ルーターを起動するために、ルーターを起動して応答を得る8.8.8.8に非常に長いタイムアウトでpingを送信することです

def wakeup():
    subprocess.Popen(["/bin/ping", "-c2", "-w"+str(WAKETIME), PINGHOST], stdout=subprocess.PIPE).stdout.read()

そして、他の http リクエストを行う前にこの関数を呼び出すだけなので、HTTP タイムアウトを増やすことに煩わされる必要はまったくありません。

于 2013-02-03T05:14:17.260 に答える