Skip to main content

A module that combines the use of redis in-built data types to build a unique queue for processing and expiry.

Project description

redis-unique-queue

A module that combines the use of redis in-built data types to build a unique queue for processing and expiry.

Usage

Items are put on the queue with an optional key. A duplicate key cannot be added until either: - the previous key that was added has been fully processed. - expiry_in_seconds have passed.

Examples

import time

import redis

import ruqueue

expiry_in_seconds = 1
conn = redis.Redis()
uqueue = ruqueue.Queue(redis_conn=conn, expiry_in_seconds=expiry_in_seconds)
uqueue.put(100)
print("Expected size 1:", uqueue.qsize())

uqueue.put(100)  # not added again
print("Expected size 1:", uqueue.qsize())

uqueue.put(200)  # not added again
print("Expected size 2:", uqueue.qsize())

# get an item
print("Expected item 100:", uqueue.get())

# go past expiry seconds to test
time.sleep(expiry_in_seconds)

# item 100 has expired
print(
    "Items that expired:", uqueue.clear_expired()
)  # [100] -> a list of items that expires

print("Expected size 1:", uqueue.qsize())
print("Expected item 200:", uqueue.get())
# we have finished handling 200
uqueue.task_done(200)
print("Expected size 0:", uqueue.qsize())

print("Expected item None:", uqueue.get())

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-unique-queue-0.0.2.tar.gz (3.2 kB view hashes)

Uploaded Source

Built Distribution

redis_unique_queue-0.0.2-py3-none-any.whl (1.8 kB view hashes)

Uploaded Python 3

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