Metadata-Version: 2.4
Name: schlange-queue
Version: 0.2.0
Summary: Lightweight, persistent, single-node task queue with at-least-once delivery guarantee
Author: Roman Novatorov
Author-email: Roman Novatorov <roman.novatorov@gmail.com>
License-Expression: MIT
License-File: LICENSE
Requires-Python: >=3.11
Project-URL: Homepage, https://github.com/rnovatorov/schlange
Description-Content-Type: text/markdown

# Schlange

[![CI](https://github.com/rnovatorov/schlange/actions/workflows/ci.yml/badge.svg)](https://github.com/rnovatorov/schlange/actions/workflows/ci.yml)
[![PyPI version](https://img.shields.io/pypi/v/schlange-queue.svg)](https://pypi.org/project/schlange-queue)
[![Code Style](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/python/black)

**Schlange** is a lightweight, persistent, single-node task queue and scheduler
built on top of SQLite.

It's designed for simplicity and reliability and might be a good choice when
you need background jobs without complexities of RabbitMQ, Redis or Kafka.

## Features

- **Persistence** - rely on rock-solid SQLite database for durable storage.
- **Scheduler** - create persistent interval-based schedules for recurring tasks.
- **Concurrency** - execute tasks concurrently using a thread pool.
- **Retries** - configure exponential backoff and max attempts.
- **Cleanup** - automatically delete old succeeded/failed tasks.
- **CLI** - manage tasks and schedules from the command line.

## Quick Start

Install from PyPI:

```bash
pip install schlange-queue
```

Checkout [examples](examples).

## Contributing

For development and contributing guides see [CONTRIBUTING.md](CONTRIBUTING.md).

## Alternatives

- [Celery](https://github.com/celery/celery). Battle-tested, heavyweight.
- [APScheduler](https://github.com/agronholm/apscheduler). Good.
- [Huey](https://github.com/coleifer/huey). Can [lose](https://github.com/coleifer/huey/issues/418) tasks.
- [Schedule](https://github.com/dbader/schedule). No concurrency, no persistence.
- [Litequeue](https://github.com/litements/litequeue). No concurrency, no scheduling.
