gpt4 book ai didi

python - 在 Windows 上使用 Python 时 time.sleep() 出现 "Interrupted function call"异常?

转载 作者:行者123 更新时间:2023-11-28 17:02:00 26 4
gpt4 key购买 nike

我们有一个每晚在 Windows 上运行的 Python 脚本,它偶尔会轮询服务器,然后使用 time.sleep() 进入休眠状态大约 30 分钟。 .

大多数时候这工作正常,但偶尔我们会得到

00:49:48 Sleeping for 29.7765000025 minutes, for a total delay of 30 minutes
00:49:48 Traceback (most recent call last):
00:49:48 File "somescript.py", line 15, in <module>
00:49:48 print(somemodule.wait_for_execution_success(someguid, poll_time_in_minutes=5))
00:49:48 File "somemodule.py", line 82, in wait_for_execution_success
00:49:48 time.sleep(poll_time_in_minutes*60)
00:49:48 IOError: [Errno 4] Interrupted function call

这可能是什么原因造成的?更重要的是,我们如何才能避免这种情况?

当然,我可以用 try: except IOError: pass 包装它,但不知何故,这感觉像是一种解决方法。

我在互联网上唯一能找到的就是尝试从 pywin32 切换到 win32api.Sleep()模块。 (我找不到任何文档,但是 the source code 以及 Microsoft 关于底层 SleepEx function 的文档建议我应该只调用 win32api.Sleep(30*60*1000)。)但是我不'喜欢有一个额外的依赖。更重要的是,这会解决上述问题吗?

(如果重要的话,这是 Python 2.7.14。)

最佳答案

由于某些外部事件,sleep 函数系列可以提前返回。

原则上,这个问题的处理方法是计算出你想要醒来的时间,然后根据离那个时间点有多远调用sleep。如果您遇到 EINTR 异常,只需根据当前时间以修改后的持续时间再次休眠。

关于python - 在 Windows 上使用 Python 时 time.sleep() 出现 "Interrupted function call"异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53776214/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com