2013-05-14 5 views
0

У меня есть сценарии как на Python, так и на Ruby, которые работают в течение нескольких дней за раз и полагаются на интернет, чтобы перейти в определенные домены и собрать данные. Есть ли способ внедрить проверку сетевого подключения в мой скрипт, чтобы я мог приостановить/повторить итерации цикла, если нет подключения и только перезагрузка при наличии возможности подключения?Как программно проверить, имеет ли ПК подключение к Интернету с использованием Python и/или Ruby?

ответ

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) 
4

Там может быть более элегантное решение, но я хотел бы сделать это:

require 'open-uri' 

def internet_connectivity? 
    open('http://google.com') 
    true 
rescue => ex 
    false 
end 
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 

т.е. пинг возвращает 0, если пинг успешно