【问题标题】:execution exited the loop while it supposed to stay in the loop执行退出循环,而它应该留在循环中
【发布时间】:2020-06-23 13:23:56
【问题描述】:

我有以下代码应该获取服务器的 IP,如果服务器不可访问(返回 False),则它进入一个循环,直到返回 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()

【问题讨论】:

  • 返回的exp1_current_ip 变量是否有可能是空字符串?另外,你的函数中是什么:public_ip != False

标签: python python-3.x loops while-loop


【解决方案1】:

您发布的问题有点含糊,尚不清楚,但据我所知,您正在使用 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)

【讨论】:

    【解决方案2】:

    我希望你会使用一些 IDE 来运行这段代码 sn-p。仔细调试可能会解决您的目的。就是这样,我解决了这样的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-28
      • 1970-01-01
      • 1970-01-01
      • 2014-04-12
      • 2017-12-30
      • 2021-12-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多