Я пишу код в Python для разработки программного приложения. Я хочу добавить следующие функциональные возможности в свой код:Проверка доступности сети постоянно, пока остальная часть кода работает отдельно
Когда пользователь начинает использовать программное обеспечение, запускается функция ping()
и пытается подключиться к Интернету для получения некоторых данных. Если сеть недоступна, она должна постоянно проверять доступность сети для извлечения данных. В то время как ping()
постоянно проверяет сеть, я хочу, чтобы мое программное приложение выполняло обычные вещи.
Мой код:
def ping():
global lst1
if network_connection() is True:
links = lxml.html.parse("http://google.com").xpath("//a/@href")
for url in links:
lst1.append(url)
else:
ping()
def network_connection():
network=False
try:
response = urllib2.urlopen("http://google.com", None, 2.5)
network=True
except urllib2.URLError, e:
pass
return network
При запуске приложения я называю ping()
и внутри ping()
функции Я делаю рекурсивный вызов. Это явно неправильно, потому что в этом случае мой код будет застревать в этом рекурсивном вызове до тех пор, пока не будет доступно сетевое соединение, и приложение не будет инициировано.
В любом случае, я могу делать обе вещи бок о бок: проверять доступность сети и работать остальную часть кода одновременно?
Возможно многопоточное обслуживание? –
В случае поломки сети, должно ли ваше приложение делать какие-то другие вещи или ждать? – Karthikeyan
Он должен делать некоторые другие вещи в случае поломки сети. – user2460869