Getting started
Install
pip install pulq
Editable install (development)
git clone https://github.com/vadim-schultz/pulq.git
cd pulq
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
pytest
Minimal example
import asyncio
from pulq import (
CommandType,
InMemoryTaskRepository,
LocalTransport,
PullQueue,
Task,
Worker,
)
async def handle(task: Task) -> dict:
return {"ok": True}
async def main() -> None:
repo = InMemoryTaskRepository()
queue = PullQueue(
repo,
priority_order=("high", "medium", "low"),
weights={"high": 3, "medium": 2, "low": 1},
)
await queue.schedule(Task(priority="high", payload={"job": "example"}))
transport = LocalTransport(queue)
worker = Worker(transport, "worker-1", handle, no_work_delay_seconds=0.01)
async def stop_later() -> None:
await asyncio.sleep(0.05)
queue.send_command("worker-1", CommandType.STOP)
await asyncio.gather(worker.run(), stop_later())
asyncio.run(main())
See also the examples/ directory in the repository.