from __future__ import division
import itertools
+import random
import sys
from twisted.internet import defer, reactor
reactor.callLater(t, d.callback, None)
return d
+def run_repeatedly(f, *args, **kwargs):
+ current_dc = [None]
+ def step():
+ delay = f(*args, **kwargs)
+ current_dc[0] = reactor.callLater(delay, step)
+ step()
+ def stop():
+ current_dc[0].cancel()
+ return stop
+
class RetrySilentlyException(Exception):
pass