我有Python和Ruby的脚本,一次运行几天,依靠互联网转到某些域并收集数据。有没有办法在我的脚本中实现网络连接检查,以便在没有连接时暂停/重试循环迭代,只在连接时重新启动?
答案 0 :(得分:4)
可能有更优雅的解决方案,但我会这样做:
require 'open-uri'
def internet_connectivity?
open('http://google.com')
true
rescue => ex
false
end
答案 1 :(得分:2)
在Python中我做了类似的尝试,除了以下块之外:
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)
答案 2 :(得分: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