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.0.17-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (1.9 MB view details)

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

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

Uploaded CPython 3.12macOS 11.0+ ARM64

fastq_redis-1.0.17-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (1.9 MB view details)

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

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

Uploaded CPython 3.11macOS 11.0+ ARM64

fastq_redis-1.0.17-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (1.9 MB view details)

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

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

Uploaded CPython 3.10macOS 11.0+ ARM64

fastq_redis-1.0.17-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (1.9 MB view details)

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

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

Uploaded CPython 3.9macOS 11.0+ ARM64

fastq_redis-1.0.17-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (1.9 MB view details)

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

fastq_redis-1.0.17-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.0.17-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for fastq_redis-1.0.17-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 71ebee46509a5ee690c4a08f717a5ea39c0cbd11a74f1b39551b82df3f0b1c98
MD5 40c4d6df68884c31fc8adb8607ad1df4
BLAKE2b-256 5bfad868c3fd471786d797675ce72183e472092ddf92141158d8fe36fc9847a4

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastq_redis-1.0.17-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_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.0.17-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for fastq_redis-1.0.17-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9e9584b1833a97f389f0be4cf7b9d9043a23df08e71f7b1c3f9842565262c831
MD5 d1d29485d5349bfbb16befe50505f5c0
BLAKE2b-256 a2de429c43b1b3cd20c6120221ff7a4743ddc016360a63434212fe7d3f95bd1f

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastq_redis-1.0.17-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.0.17-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for fastq_redis-1.0.17-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4085ab2ba01f101266ac17b331704be743670ad50b956f2357d3eabd0afed40b
MD5 a8fdfd086d3d6a8bf17f6667b9ebda62
BLAKE2b-256 f1014478e01b519b2a2ecaa614bc94d37858d6e1eb1ed9063bacec465f0e9ebc

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastq_redis-1.0.17-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_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.0.17-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for fastq_redis-1.0.17-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c8001192f509bd12436949382305e8295007dc72dc8f4978aa10fcd7bd75afb9
MD5 60f4de708c5095212d9548a2a7bcc68d
BLAKE2b-256 8fc8b6a03c58a520b8626018ae93ee301e5df2c7da1621b3d19c13b79cda8456

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastq_redis-1.0.17-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.0.17-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for fastq_redis-1.0.17-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0239cc0f81f6966c0ec2b210ed5cb33a7cf362fec0edcd0cdc498e4fac588810
MD5 8c5ecc24bafc3eb8b12d02136aa8cc8f
BLAKE2b-256 6f3863eec912f44cc1da723d67c7491bd5c6a2cbbe391a4a5d2825bd1c695e5b

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastq_redis-1.0.17-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_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.0.17-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for fastq_redis-1.0.17-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c82b487d89dd9acaed73c12f7128fa24356cd65062f105c3ab7a809950e32e4e
MD5 224ec4a735797484bb84268abf5ca5fb
BLAKE2b-256 78cde977b3e86815c982f891948fdb5813a84abc3ffcbf7c50044d38feb7a8e3

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastq_redis-1.0.17-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.0.17-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for fastq_redis-1.0.17-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5a35424fe6e3d52e2e934d94e4e3d74e98698e79b73a832dbb31476c0928d61b
MD5 d2d394dbe65d20c68d42508172cc1bed
BLAKE2b-256 8ea1a113212f02ef34293a109253b39820e8ea03599450ea71d7d486595737b3

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastq_redis-1.0.17-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_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.0.17-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for fastq_redis-1.0.17-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 81670e14e412c8e44c715f6af536d941863c7bf9f85c2adb4b0310bf8808d8cf
MD5 cf832a2fdb2b79dd123042d5d2640e47
BLAKE2b-256 1bbd39acf5a8b635574b4bf65d4a5f94ff0f5430a4ba82e520e2696723d720d9

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastq_redis-1.0.17-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.0.17-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for fastq_redis-1.0.17-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1598d26f0ce15225c69984a19c3b22c1279488985fa6beb4fbfefa1ef7b6f8c7
MD5 91aa88eac43f372042fe574c51fe0584
BLAKE2b-256 e189f771140a5e622c72adbb01a87d4bae63c94058d0788a0b37a55457687e3e

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastq_redis-1.0.17-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_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.0.17-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for fastq_redis-1.0.17-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 482a3efa110b9862884eec5887d73b9ad6eb76a1cfcc4d6e8478278f2fee21ec
MD5 e4c72a8d3ce66a86f4d541c7e95f96bf
BLAKE2b-256 07e08397f7f461dd511176113a59c39afee1b30186fceb459a5e1a3a448f959c

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastq_redis-1.0.17-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