commit 6f5da8e07d7cbc357ba4a15f7a65d3cf57925a11 Author: Arturo Filastò art@fuffa.org Date: Thu Jan 10 16:20:29 2013 +0100
Outline the rate limiting abstract class (#7852)
Classes that impose constraints on timeouts and issue rate go here. --- ooni/ratelimiting.py | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 68 insertions(+), 0 deletions(-)
diff --git a/ooni/ratelimiting.py b/ooni/ratelimiting.py new file mode 100644 index 0000000..986cf82 --- /dev/null +++ b/ooni/ratelimiting.py @@ -0,0 +1,68 @@ +class RateLimiter(object): + """ + The abstract class that imposes limits over how measurements are scheduled, + how retries are handled and when we should be giving up on a certain + measurement. + """ + @property + def timeout(self): + """ + After what timeout a certain test should be considered to have failed + and attempt a retry if the maximum retry has not been reached. + """ + raise NotImplemented + + @property + def maxTimeout(self): + """ + This is the maximum value that timeout can reach. + """ + raise NotImplemented + + @property + def concurrency(self): + """ + How many concurrent requests should happen at the same time. + """ + raise NotImplemented + + def timedOut(self, measurement): + raise NotImplemented + + def completed(self, measurement): + raise NotImplemented + + def failed(self, measurement): + raise NotImplemented + +class StaticRateLimiter(RateLimiter): + """ + This is a static ratelimiter that returns constant values. + """ + @property + def timeout(self): + return 10 + + @property + def maxTimeout(self): + return 5 * 60 + + @property + def concurrency(self): + return 10 + + def timedOut(self, measurement): + pass + + def completed(self, measurement): + pass + + def failed(self, measurement, failure): + pass + +class TimeoutRateLimiter(RateLimiter): + pass + +class BandwidthRateLimiter(RateLimiter): + pass +
tor-commits@lists.torproject.org