Ping 直到成功签入 Python,然后中断分配变量
Ping until success check in Python, then break assign variable
我有以下一段 Python 2.7 代码:
def getGateway():
""" Use the configuration to determine valid gateway
If more GWs are present, one will be chosen by random.choice
"""
localServer = ThisLocalServer(log=LOG)
gw=localServer.getRandomAgentGateway()
print "See if its a string %s - %s" % (gw,type(gw))
candidate = "gw"
response = os.system("ping -c 1 " + candidate)
if response == 0:
print candidate, 'is up!'
return gw
else:
print candidate, 'is down we need a new gatewuy'
用例如下:
我的软件使用 getRandomAgentGateway 确定 IP。不幸的是,它并不像我希望的那样智能,有时结果是无法访问 IP。我想建立一个 ping 检查,它将:
A) 使用已经内置的 getRandomAgentGateway 获取一个 IP(列表中只有两个)
B) ping IP
C) 确保这个 IP 是可达的,如果是 - 传递一个可达的 IP,跳出循环并执行 "return gw" ,如果不是 - 留在循环中并再次调用 "getRandomAgentGateway()" 直到它找到一个可达的知识产权
我无法修改 getRandomAgentGateway,所以我想在这里建立 ping 检查。任何帮助将不胜感激。
看来你的逻辑有问题
candidate = "gw"
好像做错了。你需要的大概是
if isinstance(gw,str):
# do whatever
实际上,为什么 getRandomAgentGateway return 不是 str 的答案?
最后,为了使它起作用,您可能应该尝试多次,写下如下内容:
def teste():
max_number_of_tries = 2
current_try = 0
while current_try < max_number_of_tries:
gw=getRandomAgentGateway()
if isinstance(gw,str):
response = os.system("ping " + gw)
if response == 0:
print( gw, 'is up!')
return gw
else:
print( gw, 'is down we need a new gatewuy, trying again')
current_try += 1
print ( "Too much tries" )
我有以下一段 Python 2.7 代码:
def getGateway():
""" Use the configuration to determine valid gateway
If more GWs are present, one will be chosen by random.choice
"""
localServer = ThisLocalServer(log=LOG)
gw=localServer.getRandomAgentGateway()
print "See if its a string %s - %s" % (gw,type(gw))
candidate = "gw"
response = os.system("ping -c 1 " + candidate)
if response == 0:
print candidate, 'is up!'
return gw
else:
print candidate, 'is down we need a new gatewuy'
用例如下: 我的软件使用 getRandomAgentGateway 确定 IP。不幸的是,它并不像我希望的那样智能,有时结果是无法访问 IP。我想建立一个 ping 检查,它将: A) 使用已经内置的 getRandomAgentGateway 获取一个 IP(列表中只有两个) B) ping IP C) 确保这个 IP 是可达的,如果是 - 传递一个可达的 IP,跳出循环并执行 "return gw" ,如果不是 - 留在循环中并再次调用 "getRandomAgentGateway()" 直到它找到一个可达的知识产权
我无法修改 getRandomAgentGateway,所以我想在这里建立 ping 检查。任何帮助将不胜感激。
看来你的逻辑有问题
candidate = "gw"
好像做错了。你需要的大概是
if isinstance(gw,str):
# do whatever
实际上,为什么 getRandomAgentGateway return 不是 str 的答案?
最后,为了使它起作用,您可能应该尝试多次,写下如下内容:
def teste():
max_number_of_tries = 2
current_try = 0
while current_try < max_number_of_tries:
gw=getRandomAgentGateway()
if isinstance(gw,str):
response = os.system("ping " + gw)
if response == 0:
print( gw, 'is up!')
return gw
else:
print( gw, 'is down we need a new gatewuy, trying again')
current_try += 1
print ( "Too much tries" )