pimpamqueues

Lightweight queue interfaces with Redis super powers for distributed and non-distributed systems


Keywords
queue, queues, distributed, system, systems, redis, lua
License
MIT
Install
pip install pimpamqueues==1.0.2

Documentation

PimPamQueues

Lightweight queue interfaces with Redis super powers

Build status Latest Version Supported Python versions

Description

PimPamQueues provides easy and lightweight Python interfaces to interact with queues on a distributed system.

Requirements

Features

  • Supports Python 2.7, 3.4 and 3.5.
  • Provides super-simple queue interfaces for creating different types of queues.
  • Designed to be used on distributed systems - also works on non-distributed systems 😎.

Queue Interfaces

  • SimpleQueue, just a regular queue.
  • BucketQueue, unordered queue of unique elements with a extremely fast element existence search method.
  • SmartQueue, queue which stores queued elements aside the queue for not queueing the same incoming elements again.

Installation

PIP

For a pip installation, just pip install pimpamqueues

$ pip install pimpamqueues

Usage

SimpleQueue

>>> from pimpamqueues.simplequeue import SimpleQueue
>>> queue = SimpleQueue(id_args=['simplequeue'])
>>> queue.num()
0
>>> queue.push('egg')
1
>>> queue.push_some(['bacon', 'spam'])
3
>>> queue.num()
3
>>> queue.pop()
b'egg'
>>> queue.is_empty()
False
>>> queue.push('spam', to_first=True)
3
>>> queue.elements()
[b'spam', b'bacon', b'spam']
>>> queue.pop()
b'spam'
>>> queue.elements()
[b'bacon', b'spam']
...

BucketQueue

>>> from pimpamqueues.bucketqueue import BucketQueue
>>> queue = BucketQueue(id_args=['bucketqueue'])
>>> queue.num()
0
>>> queue.push('egg')
'egg'
>>> queue.push_some(['bacon', 'spam'])
[b'bacon', b'spam']
>>> queue.num()
3
>>> queue.pop()
b'spam'
>>> queue.is_empty()
False
>>> queue.push('spam')
'spam'
>>> queue.elements()
{b'bacon', b'egg', b'spam'}
>>> queue.pop()
b'spam'
>>> queue.elements()
{b'bacon', b'egg'}
...

SmartQueue

>>> from pimpamqueues.smartqueue import SmartQueue
>>> queue = SmartQueue(id_args=['smartqueue'])
>>> queue.num()
0
>>> queue.push('egg')
'egg'
>>> queue.push_some(['bacon', 'spam'])
[b'bacon', b'spam']
>>> queue.num()
3
>>> queue.pop()
b'egg'
>>> queue.is_empty()
False
>>> queue.push('spam', to_first=True)
''
>>> queue.elements()
[b'bacon', b'spam']
>>> queue.pop()
b'bacon'
>>> queue.elements()
[b'spam']
>>> queue.push('spam', force=True)
'spam'
>>> queue.push_some(['spam', 'spam'], force=True)
[b'spam', b'spam']
>>> queue.elements()
[b'spam', b'spam', b'spam', b'spam']
...