0

私は Python と Ruby の両方で、一度に何日も実行するスクリプトを持っており、特定のドメインにアクセスしてデータを収集するためにインターネットに依存しています。スクリプトにネットワーク接続チェックを実装して、接続がない場合にループの反復を一時停止/再試行し、接続がある場合にのみ再開できるようにする方法はありますか?

4

5 に答える 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 に答える