rq-scheduler
Provides job scheduling capabilities to RQ (Redis Queue)
What it is and what it does
RQ Scheduler extends RQ (a Redis-backed job queue) with the ability to schedule jobs for future execution. Instead of enqueueing work immediately, you can specify when a job should run—either at an absolute datetime, after a relative delay, on a repeating interval, or via cron expressions. The package handles two main workflows: you define scheduled jobs using methods like `enqueue_at`, `enqueue_in`, `schedule`, or `cron`, then run a separate scheduler process that polls Redis and moves jobs into the appropriate queue when their time arrives.
The package depends on RQ for the core queue abstraction, crontab for parsing cron expressions, python-dateutil for date handling, and freezegun for testing. It supports Python 3.8 through 3.12 and is classified as Beta. Because scheduling is separate from job execution, you need both a scheduler process and RQ worker processes running to make scheduled jobs actually execute.
Use it for:
- Schedule a report to generate and email at a specific time each day using a cron expression.
- Delay a notification or cleanup task to run 10 minutes after a user action, using `enqueue_in`.
- Retry a failed API call after a fixed interval by scheduling it to run again later.
- Run a periodic health check or data sync every hour across multiple intervals.
- Cancel or inspect jobs that have already been scheduled but not yet executed.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Adds job scheduling capabilities to RQ (Redis Queue), allowing you to schedule Python functions to run at specific times, at regular intervals, or on cron schedules.
Yes, if you are already using RQ and need scheduling. The package is stable with no known vulnerabilities and low install friction. The aging maintenance status (654 days since last release) is a minor concern for new projects, but acceptable for established deployments where RQ is already the queue choice. Verify that the cron and scheduling semantics match your use case before committing.
Install
rq-scheduler on PyPI
pip
pip install rq-scheduleruv
uv add rq-schedulerpoetry
poetry add rq-schedulerInstalling rq-scheduler
Before you install
Low install friction with a pure-Python wheel distribution. Maintenance status is aging—last release was 654 days ago—but the repository remains active and unarchived with 1516 stars, suggesting stable ongoing use despite infrequent updates.
License in practice
MIT license is permissive, allowing commercial and private use with minimal restrictions; you may use this package freely in most contexts.
Quickstart
pip install rq-scheduler
from rq_scheduler import Scheduler
from rq import Queue
from datetime import datetime
scheduler = Scheduler(connection=connection)
scheduler.enqueue_at(datetime(2025, 1, 1), my_function, arg1, kwarg1=value1)
Requires a running Redis server and a separate scheduler process polling Redis to move jobs into queues at their scheduled times.
Verify before relying
- Whether the 654-day gap since last release indicates sufficient maintenance for production use in your environment.
- Performance characteristics when scheduling large numbers of jobs or under high concurrency.
- Whether Redis connectivity and a separate scheduler process are prerequisites for your deployment model.
Package facts
| License | MIT (permissive) |
| Python support | not specified |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 4 — crontab, rq, python-dateutil, freezegun |
| Maintenance | aging — 654 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 678,504/month — #5,376 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: rq_scheduler-0.14.0-py2.py3-none-any.whl
Tags
More Python Modules packages
Converts domain names between Unicode and…
permissive · top 100 on PyPI
setuptoolsSetuptools is a Python build backend and…
permissive · top 100 on PyPI
PyYAMLPyYAML parses and emits YAML 1.1 data format,…
permissive · top 100 on PyPI
pydanticPydantic validates Python data structures…
permissive · top 100 on PyPI
annotated-typesProvides reusable metadata objects for use with…
permissive · top 100 on PyPI
typing-inspectionProvides runtime tools to inspect and…
permissive · top 100 on PyPI
rqRQ is a Python library for queueing jobs and…
permissive · top 5,000 on PyPI
scheduleSchedule provides a human-friendly API for…
permissive · top 5,000 on PyPI
cronitorA Python client library for Cronitor that…
permissive · top 15,000 on PyPI
timeloopTimeloop runs periodic tasks at fixed intervals…
permissive · top 15,000 on PyPI
bullmqBullMQ for Python is a Redis-backed job queue…
permissive · top 5,000 on PyPI
django-rqDjango-RQ integrates RQ (Redis Queue) with…
permissive · top 5,000 on PyPI
rq-dashboardA Flask-based web dashboard for monitoring RQ…
permissive · top 15,000 on PyPI
fsrsImplements the Free Spaced Repetition Scheduler…
permissive · top 15,000 on PyPI
saqSAQ is an async job queue framework that runs…
permissive · top 15,000 on PyPI
schedulerAn in-process job scheduler for Python that…
copyleft · top 15,000 on PyPI