Skip to main content

Queue system with key-based throttling implemented over Redis.

Project description

Queue system with key-based throttling implemented over Redis.

  • Free software: BSD 2-Clause License

Installation

pip install redis-throttled-queue

You can also install the in-development version with:

pip install https://github.com/ionelmc/python-redis-throttled-queue/archive/main.zip

Documentation

https://python-redis-throttled-queue.readthedocs.io/

Development

To run all the tests run:

tox

Note, to combine the coverage data from all the tox environments run:

Windows

set PYTEST_ADDOPTS=--cov-append
tox

Other

PYTEST_ADDOPTS=--cov-append tox

1 Changelog =========

1.0.0 (2022-11-15)

  • Switched from eval scripts to redis functions. Minimum Redis server version becomes 7.0.

  • Replaced unpack calls with direct indexing in the Lua functions.

  • These changes improve the push operation by at least 6%.

0.6.0 (2022-07-06)

  • Simplified pop() code to avoid the expensive scan operations. The '...:names key is now a sorted set and will be used as a template for the usage keys ('...:usage:<window>').

0.5.0 (2022-06-28)

  • Added support in a AsyncThrottledQueue class that only differs a bit from the regular ThrottledQueue:

    • __len__ is removed, instead a awaitable size() method is available.

    • __init__ doesn’t validate version anymore, instead you can await on validate_version().

    • push(), pull() and cleanup() are awaitable.

  • Added a validate_version argument to ThrottledQueue (default: True).

0.4.4 (2022-05-09)

  • Fixed missing usage key expiration when some queues are empty.

0.4.3 (2022-04-09)

  • Fixed buggy counts when duplicate values are pushed. For now the highest priority will be used when two identical values would be pushed.

0.4.2 (2022-04-02)

  • Refactored some duplicated code in the pop script.

0.4.1 (2022-03-31)

  • Fixed bogus error in cleanup() when db is completely empty.

0.4.0 (2022-03-31)

  • Added last_activity and idle_seconds attributes.

  • Added a cleanup() method.

0.3.1 (2022-03-31)

  • Renamed attributes (should be safe to mess with):

    • _limit becomes limit.

    • _resolution becomes resolution.

0.3.0 (2022-03-31)

  • Allowed pop(window) using any window value (str/bytes/int recommended tho).

0.2.0 (2022-03-31)

  • Fixed __len__ (was returning a string).

0.1.0 (2022-03-30)

  • First release on PyPI.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

redis-throttled-queue-1.0.0.tar.gz (20.8 kB view details)

Uploaded Source

Built Distribution

redis_throttled_queue-1.0.0-py3-none-any.whl (6.9 kB view details)

Uploaded Python 3

File details

Details for the file redis-throttled-queue-1.0.0.tar.gz.

File metadata

  • Download URL: redis-throttled-queue-1.0.0.tar.gz
  • Upload date:
  • Size: 20.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.7

File hashes

Hashes for redis-throttled-queue-1.0.0.tar.gz
Algorithm Hash digest
SHA256 137a8d71fbf29cf41d5d7eb6c2bac543500177c02f5e49ebac716c7d1a53e422
MD5 6f6cada561a2c09979351d4c96a20f3e
BLAKE2b-256 13b7167bcbfb48e0d9d5f101ef360be337d22ff109b8e7cb73f4649d95a9932e

See more details on using hashes here.

File details

Details for the file redis_throttled_queue-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for redis_throttled_queue-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 22c2f85980aff24d9b2d3be7d52393c6edc2cc01e6af5722994425a455f97fd3
MD5 73e0f10a737ee8ef244057191109aefc
BLAKE2b-256 99ff637232b089bd02d776be172302227a08733e2cb77997d22671553aeb9e94

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page