[英]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.