openstack team mailing list archive
-
openstack team
-
Mailing list archive
-
Message #08774
Distributed rate-limiting
Howdy, folks. I've been working on a replacement for nova's
rate-limiting middleware that will handle the multiple-node case, and
I've developed a fairly generic rate-limiting package, along with a
second package that adapts it to nova. (This means you could also use
this rate-limiting setup with, say, glance, or with any other project
that uses Python middleware.) Here is some information:
* Turnstile
Turnstile is a piece of WSGI middleware that performs true distributed
rate-limiting. System administrators can run an API on multiple
nodes, then place this middleware in the pipeline prior to the
application. Turnstile uses a Redis database to track the rate at
which users are hitting the API, and can then apply configured rate
limits, even if each request was made against a different API node.
- https://github.com/klmitch/turnstile
- http://pypi.python.org/pypi/turnstile
* nova_limits
This package provides the ``nova_limits`` Python module, which
contains the ``nova_preprocess()`` preprocessor, the
``NovaClassLimit`` limit class, and the ``NovaTurnstileMiddleware``
replacement middleware class, all for use with Turnstile. These
pieces work together to provide class-based rate limiting integration
with nova.
- https://github.com/klmitch/nova_limits
- http://pypi.python.org/pypi/nova_limits
Both packages should be fairly well documented (start with README.rst),
and please feel free to log issues or make pull requests.
--
Kevin L. Mitchell <kevin.mitchell@xxxxxxxxxxxxx>
Follow ups