我在线程中有一个 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)
完成
提前致谢
代替阻塞的
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")