Skip to main content

Python bindings for FastQ — high-performance Redis job queue written in C

Project description

FastQ

A high-performance job queue written in C, backed by Redis.

FastQ aims to be faster, leaner on RAM, and polyglot compared to existing job queue solutions like BullMQ, Sidekiq, or Celery.

Features

Core (free)

  • Fast push/pop via Redis Lists with MULTI/EXEC pipelining
  • Priority queues (high / normal / low)
  • Multi-threaded worker pool (pthreads) with Redis connection pooling
  • Automatic retries with exponential backoff
  • Dead Letter Queue for permanently failed jobs
  • Crash recovery for orphaned jobs
  • Daemon mode with systemd support
  • Python bindings (CPython C extension)
  • Node.js bindings (N-API)
  • CLI tool (fastq push, pop, stats, worker, recover)
  • Colored logging (DEBUG/INFO/WARN/ERROR)
  • Zero external runtime dependencies beyond Redis

Pro

  • Cron scheduler — persistent cron jobs and one-shot delayed jobs, survive restarts
  • Rate limiting — token-bucket limiter attached per worker
  • Batch processing — pop up to N jobs in one shot with a deadline
  • Job chaining — automatically push a child job when a parent completes
  • DAG workflows — multi-step dependency graphs; dependents unlock atomically
  • Metrics — Prometheus /metrics and JSON /health HTTP endpoint
  • HMAC license — key verification with constant-time comparison (OpenSSL)

Building

Dependencies

  • hiredis — Redis C client
  • json-c — JSON parsing
  • OpenSSL — HMAC-SHA256 (license + TLS)
  • Redis server (runtime)

Compile

make          # library + CLI
make test     # run all tests
make bench    # throughput benchmark
make python   # Python C extension
make node     # Node.js N-API addon

Run tests

# Start a dev Redis instance (in a separate terminal)
./run_redis.sh

make test

# Run tests under Valgrind
make valgrind

Benchmark

make bench

Python bindings

make python
python3 -c "import fastq; q = fastq.Queue('myqueue'); q.push('{\"hello\":1}')"

Node.js bindings

make node
node -e "const { Queue } = require('./bindings/node'); const q = new Queue('127.0.0.1', 6379, 'myqueue'); console.log(q.push('{\"hello\":1}'));"

Project Structure

fastq/
├── src/                # Core library source
├── include/            # Public headers
├── tests/              # Unit and integration tests (38 tests, 7 suites)
├── benchmarks/         # Throughput benchmarks
├── bindings/
│   ├── python/         # Python CPython extension
│   └── node/           # Node.js N-API addon
├── docs/               # Architecture & API design docs
├── Makefile
├── fastq.service       # systemd unit file
└── run_redis.sh        # Dev Redis launcher

Roadmap

Done

  • Core engine, priority queues, multi-threaded workers, connection pooling
  • Crash recovery, daemon mode, CLI
  • Python and Node.js bindings
  • Cron scheduler, rate limiter, batch processing
  • Job chaining and DAG workflows
  • Prometheus metrics, health endpoint
  • HMAC license system
  • 38 tests across 7 suites, all passing

Next

  • Go / Rust bindings
  • Web UI
  • Kubernetes operator

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

fastq_redis-1.1.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (4.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

fastq_redis-1.1.0-cp312-cp312-macosx_11_0_arm64.whl (2.7 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

fastq_redis-1.1.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (4.5 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

fastq_redis-1.1.0-cp311-cp311-macosx_11_0_arm64.whl (2.7 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

fastq_redis-1.1.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (4.5 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

fastq_redis-1.1.0-cp310-cp310-macosx_11_0_arm64.whl (2.7 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

fastq_redis-1.1.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (4.5 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

fastq_redis-1.1.0-cp39-cp39-macosx_11_0_arm64.whl (2.7 MB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

fastq_redis-1.1.0-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (4.5 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

fastq_redis-1.1.0-cp38-cp38-macosx_11_0_arm64.whl (2.7 MB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

File details

Details for the file fastq_redis-1.1.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for fastq_redis-1.1.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a93dd36da34a4cb551dc16f48e7fedb8db6d974262b8f7a71545bae3afd6e87a
MD5 9dae08ae6fca49eb1c3a300feb82e360
BLAKE2b-256 f1e5468b1663711b07235fc0c2fa870763b089411d55c6e50d163f48ab8a0097

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastq_redis-1.1.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish-python.yml on OxoGhost01/FastQ-Dev

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fastq_redis-1.1.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for fastq_redis-1.1.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e2ac2e7953c7d37db60667f921a3dea9ca9d320111342b45ffd7c3cd75654287
MD5 5865a993202aa85b9967bd37ff57b485
BLAKE2b-256 1c888bde1a5e18d77a3fc661de772b9ac44ee07f312ea09512c056e0c39cbef4

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastq_redis-1.1.0-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: publish-python.yml on OxoGhost01/FastQ-Dev

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fastq_redis-1.1.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for fastq_redis-1.1.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 47bbc6ccaea2c745decf31b6933fb74047b9a7b0ad2e6c99bc3a764ffda75b64
MD5 ee387d009c7b1281fa69892a77bdd8c3
BLAKE2b-256 2e078a03d5452944e66953428af4acd37a3bc242fe24dd447ecde2590cfb4d43

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastq_redis-1.1.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish-python.yml on OxoGhost01/FastQ-Dev

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fastq_redis-1.1.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for fastq_redis-1.1.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7bdc3e9691a4f9484885cd1bc09469313dc491a0a4335d6a0291ac5b141a42b9
MD5 f8135d97023ba4dd7c60b91f7c677e78
BLAKE2b-256 42d1c9e112b460fb23aeac69a201423b3df16dd51673351e4ad756c3683c736b

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastq_redis-1.1.0-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: publish-python.yml on OxoGhost01/FastQ-Dev

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fastq_redis-1.1.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for fastq_redis-1.1.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 17c90f3ef60ebeb6e9c73b9ca828e9dee80550960ce6c942c17a2b90ab276100
MD5 3cb06486875cbc6597b3e6b1a0b12622
BLAKE2b-256 0dd14325895d92fec9c49af97164a213b4f3811e631fd2a89a589113f1865c78

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastq_redis-1.1.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish-python.yml on OxoGhost01/FastQ-Dev

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fastq_redis-1.1.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for fastq_redis-1.1.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 244efe38be841aaa881a80392fddcea028e0d11067f50b4311212936ca35f8ea
MD5 6ab6519cb106179a42330b07b7326008
BLAKE2b-256 a8811d10afbf4265ce87f5ab8b61ff7df0b3b1aab6d7088ea422fc8cf0773b99

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastq_redis-1.1.0-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: publish-python.yml on OxoGhost01/FastQ-Dev

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fastq_redis-1.1.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for fastq_redis-1.1.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 39aba5a9583c6bf15256150341fead3f2ba638c6583805a34d4a932e7fba8717
MD5 f900bc750f6b2fe69981ffb35d913601
BLAKE2b-256 62831887bbf831c818d6f318749074795f99c05f865e0dc1af502b9a9328adcd

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastq_redis-1.1.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish-python.yml on OxoGhost01/FastQ-Dev

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fastq_redis-1.1.0-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for fastq_redis-1.1.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 71656ed22deee7a7a8eba5c3680be3ed6aec1d2574a12ac19eb923e5957e7431
MD5 fa84e8874dd339f549034f50503cc2f7
BLAKE2b-256 6db2cf8396e6ec3b6d2e62e5bfa2c4100d44003be54fd700140a9ee4097ac581

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastq_redis-1.1.0-cp39-cp39-macosx_11_0_arm64.whl:

Publisher: publish-python.yml on OxoGhost01/FastQ-Dev

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fastq_redis-1.1.0-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for fastq_redis-1.1.0-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8af1847be2fec5d881de2d586a8982b85db1081d6c0342c79ddb03b27ce47c62
MD5 900449ab5b6ddcae80ee67510eb993bd
BLAKE2b-256 c3963beb032bb15a7c1cf932490859b112444d4ad7c8c0cebe787b6e883c493c

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastq_redis-1.1.0-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish-python.yml on OxoGhost01/FastQ-Dev

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fastq_redis-1.1.0-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for fastq_redis-1.1.0-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8ba88910c054e39b61d4760f105c0c59dd2fef15919742c4f8ab7c28f2ab524f
MD5 8862d945e8b27ac260505ba74a511020
BLAKE2b-256 fdda33f850344f3e9c91ca8bf648e35b5ad15f6a441dc91464e2910437f60bc9

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastq_redis-1.1.0-cp38-cp38-macosx_11_0_arm64.whl:

Publisher: publish-python.yml on OxoGhost01/FastQ-Dev

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page