Я довольно новичок в скрученном, у меня есть HTTP-клиент, который запрашивает сервер с ограничениями по скорости, когда я нажимаю этот предел, на который сервер отвечает HTTP 204, поэтому, когда я обрабатываю ответ я делаю, вероятно, что-то противное, как это:Twisted Python pause/postpone реактор
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