私は Python と Ruby の両方で、一度に何日も実行するスクリプトを持っており、特定のドメインにアクセスしてデータを収集するためにインターネットに依存しています。スクリプトにネットワーク接続チェックを実装して、接続がない場合にループの反復を一時停止/再試行し、接続がある場合にのみ再開できるようにする方法はありますか?
質問する
2298 次
5 に答える
5
もっとエレガントな解決策があるかもしれませんが、私はこれを行います:
require 'open-uri'
def internet_connectivity?
open('http://google.com')
true
rescue => ex
false
end
于 2013-05-14T20:56:51.647 に答える
2
Python では、次のような try except ブロックで同様のことを行います。
import requests
try:
response = requests.get(URL)
except Exception as e:
print "Something went wrong:"
print e
これは実行できることの単なるサンプルです。error_code または例外に関するいくつかの情報を確認し、それに従って何を実行するかを定義できます。リクエストで何か問題が発生した場合、通常はスクリプトを 10 分間スリープ状態にします。
import time
time.sleep(600)
于 2013-05-14T20:56:10.177 に答える
1
UNIX固有のソリューションは次のとおりです。
In [18]: import subprocess
In [19]: subprocess.call(['/bin/ping', '-c1', 'blahblahblah.com'])
Out[19]: 1
In [20]: subprocess.call(['/bin/ping', '-c1', 'google.com'])
Out[20]: 0
つまり、ping が成功した場合、ping は 0 を返します。
于 2013-05-14T21:01:54.990 に答える