# Tiny Queue
A modular, extensible Python queue service with support for FIFO, priority, async, and persistent queues. Designed for production use in enterprise applications with monitoring, decorators, and retry logic.
---
## ๐ Features
- โ
FIFO, Priority, Async, and Persistent Queues
- ๐ Thread-safe and async-compatible
- ๐พ File-based persistence
- ๐ Monitoring hooks (logging, metrics)
- ๐ Retry and rate-limiting utilities
- ๐งฉ Decorators for queuing function calls
- ๐งช Easy to test and extend
---
## ๐ฆ Installation
```bash
pip install tiny-queue
```
Or clone the repo for local development:
```bash
git clone https://github.com/js-sravan/tiny-queue.git
cd queue-service
pip install -e .
```
## Usage
### FIFO Queue
```python
from queue_service import FIFOQueue
q = FIFOQueue()
q.enqueue("task1")
print(q.dequeue()) # โ "task1"
```
### Priority Queue
```python
from queue_service import PriorityQueue
pq = PriorityQueue()
pq.enqueue("urgent", priority=1)
pq.enqueue("low", priority=5)
print(pq.dequeue()) # โ "urgent"
```
### Async Queue
```python
import asyncio
from queue_service import AsyncQueue
async def main():
aq = AsyncQueue()
await aq.enqueue("async-task")
task = await aq.dequeue()
print(task)
asyncio.run(main())
```
### Persistent Queue
```python
from queue_service import PersistentQueue
pq = PersistentQueue(filepath="my_queue.json")
pq.enqueue("saved-task")
print(pq.dequeue())
```
## Additional Utilities
### Retry Decorator
```python
from queue_service import retry
@retry(times=3, delay=2)
def fragile_task():
# May fail intermittently
pass
```
### Rate Limiting
```python
from queue_service import rate_limit
@rate_limit(calls_per_second=5)
def api_call():
pass
```
### Queueing Functions
```python
from queue_service import FIFOQueue, queue_task
q = FIFOQueue()
@queue_task(q)
def process_data(x):
return x * 2
process_data(10) # Enqueued as a task
```
Raw data
{
"_id": null,
"home_page": null,
"name": "tiny-queue",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "queue, priority queue, async, persistent, python library",
"author": null,
"author_email": "Sravan JS <mr.sravanjs@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/9a/92/12370c8374b32bce8bb1ba69bf86075e865f0aac973fd2fd8325be64e97d/tiny_queue-0.1.0.tar.gz",
"platform": null,
"description": "# Tiny Queue\r\n\r\nA modular, extensible Python queue service with support for FIFO, priority, async, and persistent queues. Designed for production use in enterprise applications with monitoring, decorators, and retry logic.\r\n\r\n---\r\n\r\n## \ud83d\ude80 Features\r\n\r\n- \u2705 FIFO, Priority, Async, and Persistent Queues\r\n- \ud83d\udd12 Thread-safe and async-compatible\r\n- \ud83d\udcbe File-based persistence\r\n- \ud83d\udcca Monitoring hooks (logging, metrics)\r\n- \ud83d\udd01 Retry and rate-limiting utilities\r\n- \ud83e\udde9 Decorators for queuing function calls\r\n- \ud83e\uddea Easy to test and extend\r\n\r\n---\r\n\r\n## \ud83d\udce6 Installation\r\n\r\n```bash\r\npip install tiny-queue\r\n```\r\nOr clone the repo for local development:\r\n\r\n```bash\r\ngit clone https://github.com/js-sravan/tiny-queue.git\r\ncd queue-service\r\npip install -e .\r\n```\r\n\r\n## Usage\r\n\r\n### FIFO Queue\r\n\r\n```python\r\nfrom queue_service import FIFOQueue\r\n\r\nq = FIFOQueue()\r\nq.enqueue(\"task1\")\r\nprint(q.dequeue()) # \u2192 \"task1\"\r\n```\r\n\r\n### Priority Queue\r\n```python\r\nfrom queue_service import PriorityQueue\r\n\r\npq = PriorityQueue()\r\npq.enqueue(\"urgent\", priority=1)\r\npq.enqueue(\"low\", priority=5)\r\nprint(pq.dequeue()) # \u2192 \"urgent\"\r\n```\r\n\r\n### Async Queue\r\n```python\r\nimport asyncio\r\nfrom queue_service import AsyncQueue\r\n\r\nasync def main():\r\n aq = AsyncQueue()\r\n await aq.enqueue(\"async-task\")\r\n task = await aq.dequeue()\r\n print(task)\r\n\r\nasyncio.run(main())\r\n```\r\n\r\n### Persistent Queue\r\n```python\r\nfrom queue_service import PersistentQueue\r\n\r\npq = PersistentQueue(filepath=\"my_queue.json\")\r\npq.enqueue(\"saved-task\")\r\nprint(pq.dequeue())\r\n```\r\n\r\n## Additional Utilities\r\n\r\n### Retry Decorator\r\n```python\r\nfrom queue_service import retry\r\n\r\n@retry(times=3, delay=2)\r\ndef fragile_task():\r\n # May fail intermittently\r\n pass\r\n```\r\n\r\n### Rate Limiting\r\n```python\r\nfrom queue_service import rate_limit\r\n\r\n@rate_limit(calls_per_second=5)\r\ndef api_call():\r\n pass\r\n```\r\n\r\n### Queueing Functions\r\n```python\r\nfrom queue_service import FIFOQueue, queue_task\r\n\r\nq = FIFOQueue()\r\n\r\n@queue_task(q)\r\ndef process_data(x):\r\n return x * 2\r\n\r\nprocess_data(10) # Enqueued as a task\r\n```\r\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "A modular, extensible Python queue service",
"version": "0.1.0",
"project_urls": null,
"split_keywords": [
"queue",
" priority queue",
" async",
" persistent",
" python library"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "cfbb0752ef7464a82613285eb5dc2d39263f7f10672b1b6d45971f8d0bef73bf",
"md5": "563c412c9272742e03b4029d642301f8",
"sha256": "ef2f5d55ac66edcb8d45bb4f4a281cef3d04953f1dcba39556e5f9a1450e1454"
},
"downloads": -1,
"filename": "tiny_queue-0.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "563c412c9272742e03b4029d642301f8",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 6414,
"upload_time": "2025-08-28T18:26:50",
"upload_time_iso_8601": "2025-08-28T18:26:50.623393Z",
"url": "https://files.pythonhosted.org/packages/cf/bb/0752ef7464a82613285eb5dc2d39263f7f10672b1b6d45971f8d0bef73bf/tiny_queue-0.1.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "9a9212370c8374b32bce8bb1ba69bf86075e865f0aac973fd2fd8325be64e97d",
"md5": "7c65664d30dcd314e4e6e77689eb95f3",
"sha256": "e5c71d21aa6c91194ca4ce25f581c61bd3c1b466ce03f8d33111df04249f68a5"
},
"downloads": -1,
"filename": "tiny_queue-0.1.0.tar.gz",
"has_sig": false,
"md5_digest": "7c65664d30dcd314e4e6e77689eb95f3",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 5601,
"upload_time": "2025-08-28T18:26:52",
"upload_time_iso_8601": "2025-08-28T18:26:52.366183Z",
"url": "https://files.pythonhosted.org/packages/9a/92/12370c8374b32bce8bb1ba69bf86075e865f0aac973fd2fd8325be64e97d/tiny_queue-0.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-28 18:26:52",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "tiny-queue"
}