gpt4 book ai didi

python - 在其余代码单独运行的同时持续检查网络可用性

转载 作者:行者123 更新时间:2023-11-28 17:46:04 25 4
gpt4 key购买 nike

我正在用 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() 函数内部进行递归调用。这显然是错误的,因为在那种情况下,我的代码将停留在这个递归调用中,直到网络连接可用并且应用程序将不会启动。

无论如何我可以同时做这两件事:同时检查网络可用性和运行其余代码?

最佳答案

首先,不需要连续 ping,即使是在单独的进程/线程中发生。你应该使用 exponential backoff algorithm .

并让 ping 进程在网络出现故障时更新共享变量,以确保您的主进程一直等到网络启动/或进行离线工作。为此,您的代码必须在执行期间定期检查变量。我建议 multiprocessing module for this task.

关于python - 在其余代码单独运行的同时持续检查网络可用性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17890314/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com