Skip to main content

A Redis Backend for Celery with polling instead of pub/sub

Project description

Celery Redis Poll Backend

A specialized Redis backend for Celery that replaces the default pub/sub mechanism for task result retrieval with a polling-based approach.

Why Polling Instead of Pub/Sub?

The default Celery Redis backend uses Redis pub/sub for real-time task result notifications. While pub/sub provides immediate updates, it can face challenges in certain scenarios:

  • Deadlocks in highly concurrent/multi-threaded workloads due to single-threaded nature of Redis and Celery clients.
  • Higher overhead with SUBSCRIBE channels.

This backend provides a more robust alternative by using a polling mechanism instead.

Features

  • Polling-Based Results: Replaces pub/sub with a polling mechanism for task result retrieval
  • Compatible with Existing Code: Drop-in replacement for the standard Redis backend
  • Configurable Polling: Adjust polling intervals and timeouts to match your needs
  • Resource Efficient: Reduces Redis memory usage by eliminating pub/sub channels

Installation

pip install celery-redis-poll

After installation new backends are automatically registered with Celery:

  • redis+poll
  • rediss+poll
  • redis+cluster_poll
  • rediss+cluster_poll

Usage

Configure your Celery application to use the polling backend:

from celery import Celery

app = Celery('your_app',
             broker='redis://localhost:6379/0',
             backend='redis+poll://localhost:6379/0')

For clustered Redis, use redis+cluster_poll.

Requirements

  • Python >= 3.7
  • Celery >= 5.0.0
  • Redis >= 4.5.0
  • celery-redis-cluster >= 0.1.6

Development

For development, install extra dependencies:

pip install celery-redis-poll[dev]

License

This project is licensed under the MIT License.

Contributing

Contributions are welcome! Please feel free to submit issues and pull requests.

Project details


Download files

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

Source Distribution

celery_redis_poll-0.1.7.tar.gz (4.6 kB view details)

Uploaded Source

Built Distribution

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

celery_redis_poll-0.1.7-py3-none-any.whl (4.6 kB view details)

Uploaded Python 3

File details

Details for the file celery_redis_poll-0.1.7.tar.gz.

File metadata

  • Download URL: celery_redis_poll-0.1.7.tar.gz
  • Upload date:
  • Size: 4.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.1

File hashes

Hashes for celery_redis_poll-0.1.7.tar.gz
Algorithm Hash digest
SHA256 5b1a009792b35351c56221078b169758161d59fa0ece8b794cf32d76825d9970
MD5 91db7f455f592a1c81b4d8d4b911aa31
BLAKE2b-256 b9c92d385b695dc34c765566b3d64649edb2eeb8606fdd82a1538d95a2d6eabc

See more details on using hashes here.

File details

Details for the file celery_redis_poll-0.1.7-py3-none-any.whl.

File metadata

File hashes

Hashes for celery_redis_poll-0.1.7-py3-none-any.whl
Algorithm Hash digest
SHA256 7cef7c5bedcf5861444ea97e184d7bc94be53a2b20ea837a5fadf00bd2eeea35
MD5 9dfecc96a7bc9ed3e413c644b0e75bf1
BLAKE2b-256 42d7fa3f8285cd3be15dbc5ccf9d36806a277f908b4a1cb9deab3b7b94f1446c

See more details on using hashes here.

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