나는 트위스트가 새롭다. 속도 제한이있는 서버를 쿼리하는 HTTP 클라이언트가있다. 서버가 HTTP 204로 응답 할 때 서버가 HTTP 204로 응답하므로, response 나는 아마도 다음과 같이 불쾌한 일을하고 있습니다.뒤틀린 파이썬 일시 중지/반응기 지연
def handleResponse(r, ip):
if r.code == 204:
print 'Got 204, sleeping'
time.sleep(120)
return None
else:
jsonmap[ip] = ''
whenFinished = twisted.internet.defer.Deferred()
r.deliverBody(PrinterClient(whenFinished, ip))
return whenFinished
모든 작업을 일시 중지하고 싶기 때문에이 작업을하고 있습니다.
다음과 같은 두 가지 동작이 있습니다. 동일한 실행에서 나중에 204에 도달하는 작업을 다시 실행하거나 (가능하면 모름) 오류를 기록한 다음 다시 실행하십시오 그 후에 프로그램의 또 다른 실행에서. 올릴 수있는 또 다른 문제는 서버
timeoutCall = reactor.callLater(60, d.cancel)
def completed(passthrough):
if timeoutCall.active():
timeoutCall.cancel()
return passthrough
d.addCallback(handleResponse, ip)
d.addErrback(handleError, ip)
d.addBoth(completed)
아무런 반응이 없으면 (아래 코드 참조) 나는 시간의 미리 정의 된 시간 후에 지연을 취소하기 위해 연결에 시간 제한을 설정 한 것입니다 내가 마주 칠 수있는 또 다른 문제는 내가 잠든다면이 시간 초과에 걸리므로 모든 요청이 취소된다는 것입니다.
나는 충분히 정확했기를 바랍니다. 미리 감사드립니다.
Jeppo