如何在python中的X秒后引发超时异常

时间:2013-08-11 15:06:01

标签: python exception timeout

我有一个功能,我需要在X秒后引发异常,我该怎么办? 我尝试这个代码,但它不起作用:

from eventlet.timeout import Timeout
timeout = Timeout(seconds, exception)
try:
   do somethins
finally:
   timeout.cancel()

1 个答案:

答案 0 :(得分:1)

根据the timeout documentation

  

有两个超时警告需要注意:

     
      
  • 如果try / finally或with-block中的代码块永远不会合作产生,则无法引发超时。在Eventlet中,这个   应该很少成为一个问题,但要注意你不能超时   使用此类的仅CPU操作。
  •   
  • 如果代码块捕获并且没有重新引发BaseException(例如,使用except :),那么它将捕获Timeout异常,并且   可能不会按预期中止。
  •   

如果您在循环中没有执行任何IO / sleep的情况下进行昂贵的计算,则不会发生超时。