Metadata-Version: 2.1
Name: moonqueue
Version: 0.3.0
Summary: Queue Implementation with Redis
Home-page: https://github.com/Gatsby-Lee/moonqueue
Author: Gatsby Lee
License: GPL-3.0
Keywords: redis queue interface
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Topic :: Utilities
Requires-Python: >=3.6
Description-Content-Type: text/x-rst
Requires-Dist: retry-redis
Provides-Extra: dev
Requires-Dist: pytest ; extra == 'dev'
Requires-Dist: wheel ; extra == 'dev'
Requires-Dist: bpython ; extra == 'dev'
Requires-Dist: flake8 ; extra == 'dev'
Requires-Dist: autopep8 ; extra == 'dev'
Requires-Dist: pylint ; extra == 'dev'
Provides-Extra: test
Requires-Dist: pytest ; extra == 'test'

.. image:: https://img.shields.io/badge/License-GPL%20v3-blue.svg
   :target: https://www.gnu.org/licenses/gpl-3.0

.. image:: https://badge.fury.io/py/cloud-storage.svg
    :target: https://badge.fury.io/py/cloud-storage

.. image:: https://img.shields.io/travis/Gatsby-Lee/moonqueue.svg
   :target: https://travis-ci.org/Gatsby-Lee/moonqueue


moonqueue
=========

MoonQueue is another Queue Library using Redis as storage.


How to Install
--------------

.. code-block:: bash

    pip install moonqueue


How To Use
----------

RedisQueueList - One Queue
^^^^^^^^^^^^^^^^^^^^^^^^^^

.. code-block:: python

    >>> from moonqueue import RedisQueueList
    >>> r = RedisQueueList('list:myqueue')

    # push one message
    >>> r.push(['apple'])
    (('list:myqueue', 1),)
    >>> r.pop()
    ('list:myqueue', b'apple')

    # push multiple messages
    >>> r.push(['apple', 'banana'])
    (('list:myqueue', 2),)
    >>> r.pop()
    ('list:myqueue', b'apple')
    >>> r.pop()
    ('list:myqueue', b'banana')
    >>> r.pop()
    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    File "/home/web/moonqueue/moonqueue/redis_queue_list.py", line 52, in pop
        raise EmptyQueueException(excep_msg)
    moonqueue.excep.EmptyQueueException: list:myqueue is empty


RedisQueueList - Two Queues
^^^^^^^^^^^^^^^^^^^^^^^^^^^

.. code-block:: python

    >>> from moonqueue import RedisQueueList
    >>> r = RedisQueueList(['list:myqueue1', 'list:myqueue2'])
    >>> r.get_queues()
    ['list:myqueue1', 'list:myqueue2']

    # push one message - it will be pused to all queues
    >>> r.push(['apple'])
    (('list:myqueue1', 1), ('list:myqueue2', 1))

    # pop from queues
    >>> r.pop()
    ('list:myqueue1', b'apple')
    >>> r.pop()
    ('list:myqueue2', b'apple')
    >>> r.pop()
    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    File "/home/web/moonqueue/moonqueue/redis_queue_list.py", line 52, in pop
        raise EmptyQueueException(excep_msg)
    moonqueue.excep.EmptyQueueException: ['list:myqueue1', 'list:myqueue2'] is empty


