저는 Twisted에 익숙하지 않습니다. 마침내 지연이 어떻게 작동하는지 파악한 후에 작업에 어려움을 겪고 있습니다. 루프에서 REST 요청을 보내는 스크립트를 구현하는 것이 목표이지만 루프가 멈추는 지점에서 오류가 발생하면 중단해야합니다. 콜백을 사용하고 있기 때문에 쉽게 예외를 잡을 수 없으며 오류 복구에서 멈추는 방법을 모르기 때문에 막혔습니다.예외가 발생하면 작업을 중지합니다 .LoopingCall
이 내 코드의 단순화 된 버전은 다음과 같습니다
def send_request():
agent = Agent(reactor)
req_result = agent.request('GET', some_rest_link)
req_result.addCallbacks(cp_process_request, cb_process_error)
if __name__ == "__main__":
list_call = task.LoopingCall(send_request)
list_call.start(2)
reactor.run()
나는 stop 방법에 대해 알고 있지만, 연결이 끊어지면 errback도 호출됩니다. 성공적인 연결과 종료의 구분을 쉽게 할 수있는 방법이 있습니까? – Michal
닫기에서 오류 수정이 호출됩니다. 질문에 더 많은 코드를 제공해야합니다. 일반적으로 close는 단지'프로토콜'의'connectionLost'를 호출하고 연기되지는 않습니다. 당신의 경우에 어떻게 일어나고 있는지 혼란 스럽습니다. 당신은 내가 [이] (http://stackoverflow.com/a/23274411/3334178)의 예제 코드에서 얘기하고있는 닫는 스타일을 볼 수 있습니다 prev 대답 –
잠깐, 당신은 배타적으로'agent.request '전화? (I.E. 너 자신이'listenTCP' 등과 연결을하지 않는다.) 나는 꼬인 코드로 좀더 genaric 한 답을주고 있었다. –