【发布时间】:2021-08-12 19:03:14
【问题描述】:
在工作中,我正在从旧版本的 Python 转换系统,作为其中的一部分,我需要将 gevent 升级到版本 21.1.2。
我们的一些测试在被测试的代码中使用了libfaketime.fake_time 和time.sleep。然而,在新的gevent 版本中,这些睡眠永远处于睡眠状态,可能是因为时间不会改变。 time 模块确实得到了修补。
有没有办法让它在规定的时间内休眠然后醒来?
【问题讨论】:
在工作中,我正在从旧版本的 Python 转换系统,作为其中的一部分,我需要将 gevent 升级到版本 21.1.2。
我们的一些测试在被测试的代码中使用了libfaketime.fake_time 和time.sleep。然而,在新的gevent 版本中,这些睡眠永远处于睡眠状态,可能是因为时间不会改变。 time 模块确实得到了修补。
有没有办法让它在规定的时间内休眠然后醒来?
【问题讨论】:
使用gevent.sleep 而不是time.sleep。您也可以随时将任何内容包裹在 Timeout 周围:
from gevent import sleep, Timeout
with Timeout(2, False) as timeout: # This will force it to move on after 2 seconds regardless
sleep(10)
【讨论】:
time.sleep和gevent.sleep是一样的。原来,我没有在我的配置中设置这个:DONT_FAKE_MONOTONIC=1。很抱歉没有早点提及或删除问题