python - 执行退出循环,而它应该留在循环中
问题描述
我有以下代码应该获取服务器的 IP,如果服务器不可访问(返回 False),那么它会进入一个循环,直到它返回除 False 以外的任何内容。
我今天在服务器离线时对其进行测试,它进入循环一段时间,但突然它以一个值 (False) 打破循环,只要它是错误的,它就应该留在循环中。
有人可以检查代码吗?我是 Python 和一般编程的新手。
def startup_check():
exp1_current_ip = get_exp_ip()
if exp1_current_ip == False:
while True:
sleep(10)
exp1_current_ip = get_exp_ip()
if public_ip != False:
break
do_more(exp1_current_ip)
def get_exp_ip():
try:
session = HTMLSession()
exp_login_url = ("https://10.10.10.10/login")
network_conf_url = ("https://10.10.10.10/ip")
login_payload = {
"submitbutton": "Login",
"username": "username",
"password": "password",
"formbutton": "Login"
}
login = session.post(exp_login_url, data=login_payload, verify=False)
logging.exception(f"Loging to {exp_ip} was successful")
network_conf = session.get(network_conf_url, verify=False)
exp1_current_ip = str(network_conf.html.find("#ip_v4_nat_addr2")).split("'")[11]
return exp1_current_ip
except:
return False
startup_check()
解决方案
您发布的问题有点含糊,尚不清楚,但据我所知,您正在使用 public_ip 来打破循环,但我不知道您是否从外部获得 public_ip 的任何价值,因为您的循环取决于它,跟进,或者如果您将 exp1_current_ip 误认为 public_ip 然后替换它应该可以工作。
def startup_check():
exp1_current_ip = get_exp_ip()
if exp1_current_ip == False:
while True:
sleep(10)
exp1_current_ip = get_exp_ip()
if exp1_current_ip != False:
break
do_more(exp1_current_ip)
推荐阅读
- node.js - Angular 9 Node.js AWS - 添加 import AWS from 'aws-sdk' 后编译错误
- r - 如何将工作目录设置为子文件夹?
- html - iPhone 11 上的 apple-mobile-web-app-status-bar-style
- airflow - Google Cloud Composer:节省成本
- python - 在运行时更改 python 子类
- c# - 十进制值的规范化
- emgucv - EmguCV - 创建后垫不为空
- reactjs - Firebase Firestore 服务器时间戳而不将所有 Firebase 导入我的网络项目?
- google-cloud-platform - 会话断开后删除的 Google Cloud VM 文件
- angular - 接口对象属性未定义,但有角度值