2017-04-05 3 views
0

을 서비스하고 내 코드는 API와 연결을 시도 :설정 시간 제한 내가 서비스를

import my_srvice_api 

그것은 시간 초과되지 않은 메커니즘이 내 코드는 서비스가 실행되고 있지 않은 경우 대기 유지 내가 이런 식으로 그렇게 할 수있는 방법을 시도하고 타임 아웃 후 예외를 발생하려면 :

timeout = 3 
try: 
    obj = my_service_api.connect() 
except TimeoutException as e: 
    print("service my_service start") 
+1

에만 함수 또는 객체를 인스턴스화하여 코드를 실행하지 않으면 서비스 아무것도 일어나지 않을 것이다 가져 오면. connection에 대해'timeout'을 설정하고 싶다면 (이미 내장 된 메소드가있을 수 있습니다), 연결을 루프에 넣고 한계에 도달하면 종료해야합니다. 'try-except'는 기본적으로 예외를 처리하는 것입니다 (예 : 해당 연결 오류 등을 처리하려는 경우). 제한 시간은 조건이있는 루프를 고려하는 것이 좋습니다. – Kasramvd

+0

@ Kasramvd 당신의 권리, 그것은 내 잘못입니다. 나는 그것을 바꿨다. – RaminNietzsche

+0

시도 : r = requests.get (api_url, timeout = 3) 요청을 제외합니다. 오류 발생 시간 : 인쇄 ('오류') – GThamizh

답변

1

내가이 장식 (this 게시물에 기초)과 일을 추가 할 수 있습니다. 이 질문에 참석 한 모든 사람들에게 감사드립니다.

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)