While循环不停地等待,直到time.sleep完成

问题描述 投票:0回答:1

我在线程中有一个 while 循环,每 10 分钟检查一次网络流。

while not stop_event.is_set():
    time.sleep(600)
    response = requests.get(api_url, headers=headers, params=params)
    if response.status_code==200:
        print("UPDATED")
    else:
        print("NOT UPDATED")

但是如果

not stop_event.is_set()
在 10 分钟之前更改为
False
,那么 while 循环仍然会等待 10 分钟并执行其余代码,然后退出

    response = requests.get(api_url, headers=headers, params=params)
    if response.status_code==200:
        print("UPDATED")
    else:
        print("NOT UPDATED")

我想立即退出,因为

not stop_event.is_set()
变为
False
而没有意识到
time.sleep(600)
完成

提前致谢

python-3.x time while-loop
1个回答
0
投票

代替阻塞的

time.sleep
,您可以使用
threading.Event.wait
,如果设置了内部事件标志,它将立即返回:

def run_in_thread(stop_event):
    while not stop_event.is_set():
        if stop_event.wait(600):
            break
        response = requests.get(api_url, headers=headers, params=params)
        if response.status_code == 200:
            print("UPDATED")
        else:
            print("NOT UPDATED")
© www.soinside.com 2019 - 2024. All rights reserved.