[英]Set timeout for connection to service
我有一个服务,我的代码尝试使用API连接到它:
import my_srvice_api
它没有任何超时机制,如果服务未运行,我的代码将保持等待状态,我想尝试在超时引发异常后,如何执行以下操作:
timeout = 3
try:
obj = my_service_api.connect()
except TimeoutException as e:
print("service my_service start")
我添加了这个装饰器(基于这篇文章)及其作品。 感谢所有参与此问题的人。
import threading
import sys
class TimeoutError(Exception): pass
def timelimit(timeout):
def internal(function):
def internal2(*args, **kw):
class Calculator(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
def run(self):
try:
function(*args, **kw)
except:
pass
c = Calculator()
c.start()
c.join(timeout)
if c.isAlive():
raise TimeoutError
return internal2
return internal
然后,将此装饰器添加到我的函数中:
@timelimit(2)
def time_out_api():
obj = my_service_api.connect()
try:
time_out_api()
except TimeoutError as e:
print("service my_service start")
exit(0)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.