Skip to main content

Build Status

Simple Python module providing rate limiting.

Overview

This package provides the ratelimiter module, which ensures that an operation will not be executed more than a given number of times on a given period. This can prove useful when working with third parties APIs which require for example a maximum of 10 requests per second.

Usage

Decorator flavor:

>>> from ratelimiter import RateLimiter
>>> @RateLimiter(max_calls=10, period=1.0)
... def do_something():
...     pass
...

Context manager flavor:

>>> from ratelimiter import RateLimiter
>>> rate_limiter = RateLimiter(max_calls=10, period=1.0)
>>> for i in range(100):
...     with rate_limiter:
...         do_something()
...

Using with callback:

>>> from ratelimiter import RateLimiter
>>> import time
>>> def limited(until):
...     duration = int(round(until - time.time()))
...     print('Rate limited, sleeping for %d seconds' % duration)
...
>>> rate_limiter = RateLimiter(max_calls=2, period=3, callback=limited)
>>> for i in range(3):
...     with rate_limiter:
...         print('Iteration', i)
...
Iteration 0
Iteration 1
Rate limited, sleeping for 3 seconds
Iteration 2

License

Original work Copyright 2013 Arnaud Porterie
Modified work Copyright 2015 Frazer McLean

Licensed under the Apache License, Version 2.0 (the “License”); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Metadata

Release files for ratelimiter 0.2.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ratelimiter 0.2.4
File Size Uploaded
ratelimiter-0.2.4.zip 8.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ratelimiter 0.2.4
File Interpreter ABI Platform
ratelimiter-0.2.4-py2.py3-none-any.whl Python 2, Python 3 none any Details

Total release size: 15.1 kB

Release files / ratelimiter-0.2.4.zip

Download URL ratelimiter-0.2.4.zip
Size 8.4 kB
Tags Source
SHA-256 checksum
How to use checksums
a9331f800115bab587582cd63fffb0c079407cd349e9a1d4a864971f1348decd
BLAKE2b-256 checksum
How to use checksums
1644c62ad8f5aec2dad3c39b8be134c2b3316ce550757139b55d996e3e54b76d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / ratelimiter-0.2.4-py2.py3-none-any.whl

Download URL ratelimiter-0.2.4-py2.py3-none-any.whl
Size 6.7 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
579ed7e3248ba6d2f874f83ab7522ec44bef303ab34a16b36896f6fe2d639b0b
BLAKE2b-256 checksum
How to use checksums
3f94fe7589c06e2ea7930db69d7fa4804b414acafbb68c869b1e67d07ef19e67
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

1.2.0

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.3.0

This release

0.2.4 This release

2 release files

0.2.3

1 release file

0.2.2

1 release file

0.2.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page