Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/nicolaslm/spinach
Modern Redis task queue for Python 3
https://github.com/nicolaslm/spinach
asyncio jobs python python3 queue redis tasks thread
Last synced: 13 days ago
JSON representation
Modern Redis task queue for Python 3
- Host: GitHub
- URL: https://github.com/nicolaslm/spinach
- Owner: NicolasLM
- License: bsd-2-clause
- Created: 2017-09-03T13:58:29.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2024-06-03T01:27:59.000Z (5 months ago)
- Last Synced: 2024-10-13T09:11:16.610Z (about 1 month ago)
- Topics: asyncio, jobs, python, python3, queue, redis, tasks, thread
- Language: Python
- Homepage: https://spinach.readthedocs.io
- Size: 239 KB
- Stars: 63
- Watchers: 6
- Forks: 4
- Open Issues: 6
-
Metadata Files:
- Readme: README.rst
- License: LICENSE
Awesome Lists containing this project
README
Spinach
=======.. image:: https://github.com/NicolasLM/spinach/workflows/Run%20tests/badge.svg?branch=master
:target: https://github.com/NicolasLM/spinach/actions
.. image:: https://coveralls.io/repos/github/NicolasLM/spinach/badge.svg?branch=master
:target: https://coveralls.io/github/NicolasLM/spinach?branch=master
.. image:: https://readthedocs.org/projects/spinach/badge/?version=latest
:target: http://spinach.readthedocs.io/en/latest/?badge=latest
.. image:: https://img.shields.io/badge/IRC-irc.libera.chat-1e72ff.svg?style=flat
:target: https://kiwiirc.com/nextclient/irc.libera.chat:+6697/#spinachRedis task queue for Python 3 heavily inspired by Celery and RQ.
Distinctive features:
- Threaded and asyncio workers
- At-least-once or at-most-once delivery per task
- Periodic tasks without an additional process
- Concurrency limits on queued jobs
- Scheduling of tasks in batch
- Integrations with `Flask, Django, Logging, Sentry and Datadog
`_
- Embeddable workers for easier testing
- See `design choices
`_ for more
detailsQuickstart
----------Install Spinach with pip::
pip install spinach
Create a task and schedule a job to be executed now:
.. code:: python
from spinach import Engine, MemoryBroker
spin = Engine(MemoryBroker())
@spin.task(name='compute')
def compute(a, b):
print('Computed {} + {} = {}'.format(a, b, a + b))# Schedule a job to be executed ASAP
spin.schedule(compute, 5, 3)print('Starting workers, ^C to quit')
spin.start_workers()Documentation
-------------The documentation is at `https://spinach.readthedocs.io
`_.IRC channel for online discussions **#spinach** on `irc.libera.chat
`_.License
-------BSD 2-clause