设置连接服务的超时时间
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")
我添加了这个装饰器(基于 this post)及其作品。感谢所有回答这个问题的人。
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)
我有一项服务,我的代码尝试使用 API:
连接到它import my_srvice_api
它没有任何超时机制,如果服务不是 运行,我的代码会一直等待,我想尝试在超时后引发异常,我该怎么做:
timeout = 3
try:
obj = my_service_api.connect()
except TimeoutException as e:
print("service my_service start")
我添加了这个装饰器(基于 this post)及其作品。感谢所有回答这个问题的人。
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)