def add_timeout(deferred, timeout):
'''
Raise TimeoutError on deferred after timeout seconds.
Returns original deferred.
'''
def timeout_deferred():
if not deferred.called:
deferred.errback(TimeoutError())
timeout_d = reactor.callLater(timeout, timeout_deferred)
def cancel_timeout_d(result):
if not timeout_d.called:
timeout_d.cancel()
return result
deferred.addBoth(cancel_timeout_d)
return deferred
评论列表
文章目录