{"library":"rq-scheduler","title":"RQ Scheduler","description":"RQ Scheduler provides a job scheduling layer for RQ (Redis Queue), allowing users to schedule jobs to run at specific times or on recurring cron-like schedules. It is an active project, currently at version 0.14.0, with releases coinciding with major RQ updates and feature additions.","language":"python","status":"active","last_verified":"Sat May 16","install":{"commands":["pip install rq-scheduler"],"cli":{"name":"rqscheduler","version":"usage: rqscheduler [-h] [-b] [-H HOST] [-p PORT] [-d DB] [-P PASSWORD]"}},"imports":["from rq_scheduler import Scheduler"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import os\nfrom redis import Redis\nfrom rq_scheduler import Scheduler\nfrom datetime import datetime, timedelta\n\ndef my_job(arg1, arg2):\n    print(f'Running job with args: {arg1}, {arg2}')\n    return arg1 + arg2\n\n# Ensure a Redis connection is available. Use a default if REDIS_URL not set.\nredis_url = os.environ.get('REDIS_URL', 'redis://localhost:6379')\nredis_conn = Redis.from_url(redis_url)\n\n# Instantiate the scheduler with the Redis connection\nscheduler = Scheduler(connection=redis_conn)\n\n# Example 1: Schedule a job to run once at a specific time\njob_at_time = datetime.utcnow() + timedelta(seconds=10)\nscheduler.enqueue_at(\n    job_at_time,              # Time to run the job\n    my_job,                   # Function to be called\n    'hello', 'world'          # Arguments for the function\n)\nprint(f\"Scheduled 'my_job' to run at {job_at_time} UTC\")\n\n# Example 2: Schedule a recurring job using cron syntax (every minute)\n# Note: This will repeatedly add the job to the queue based on the cron string.\n# Ensure 'rq-scheduler' process is running for this to work.\nscheduler.cron(\n    '*/1 * * * *',            # Cron string (every minute)\n    func=my_job,              # Function to be called\n    args=('cron_arg1', 'cron_arg2'), # Arguments for the function\n    repeat=None,              # Run indefinitely\n    queue_name='default'      # Queue to add the job to\n)\nprint(\"Scheduled 'my_job' to run every minute via cron\")\n\n# To run the scheduler, you would execute `rq-scheduler` in your terminal.\n# To process jobs, you would execute `rq worker` in your terminal.\n","lang":"python","description":"This quickstart demonstrates how to instantiate `rq_scheduler.Scheduler` and schedule a job to run at a specific future time using `enqueue_at` and a recurring job using `cron`. Ensure your Redis server is running and that both `rq-scheduler` and `rq worker` processes are started separately for the scheduled jobs to be processed.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-16","installed_version":"0.14.0","pypi_latest":"0.14.0","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":4,"avg_import_s":0.53,"wheel_type":"sdist"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"rq-scheduler","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.38,"mem_mb":12.1,"disk_size":"25.1M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"rq-scheduler","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":4,"import_time_s":0.3,"mem_mb":12.1,"disk_size":"26M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"rq-scheduler","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.53,"mem_mb":13.9,"disk_size":"28.3M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"rq-scheduler","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":4,"import_time_s":0.51,"mem_mb":13.9,"disk_size":"29M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"rq-scheduler","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.71,"mem_mb":13.8,"disk_size":"19.9M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"rq-scheduler","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":3.9,"import_time_s":0.75,"mem_mb":13.8,"disk_size":"20M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"rq-scheduler","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.73,"mem_mb":14.7,"disk_size":"19.6M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"rq-scheduler","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":3.5,"import_time_s":0.68,"mem_mb":14.7,"disk_size":"20M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"rq-scheduler","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.36,"mem_mb":11.5,"disk_size":"23.9M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"rq-scheduler","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":4.5,"import_time_s":0.39,"mem_mb":11.5,"disk_size":"24M"}]}}