A lightweight job scheduling extension for Resque that supports delayed and recurring jobs.
Resque-scheduler is a lightweight job scheduling extension for Resque that allows developers to queue jobs to run at specific times in the future or on a recurring schedule. It solves the problem of handling time-based tasks like sending delayed emails or running periodic maintenance jobs within the Resque ecosystem, eliminating the need for external cron systems.
Ruby developers using Resque for background job processing who need to schedule delayed or recurring tasks, such as sending follow-up emails, generating periodic reports, or performing batch operations at specific times.
Developers choose Resque-scheduler because it integrates seamlessly with Resque, providing a familiar API and infrastructure for scheduling without introducing new dependencies. Its support for both delayed and recurring jobs, along with features like dynamic scheduling and failover, makes it a robust and flexible solution for time-based job management.
A light-weight job scheduling system built on top of Resque
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Integrates directly with Resque's Redis configuration and API, allowing delayed jobs to be enqueued using familiar methods like `Resque.enqueue_in`, as shown in the basic usage examples.
Supports both one-off delayed jobs and cron-like recurring jobs via YAML configuration, providing versatility for time-based tasks such as sending emails or running maintenance.
When enabled with `Resque::Scheduler.dynamic = true`, schedules can be added, updated, or removed at runtime without restarting the scheduler process, offering flexibility for changing requirements.
Allows multiple scheduler instances with master election to ensure high availability, preventing single points of failure for scheduled jobs, as detailed in the redundancy section.
Jobs are not executed exactly at the scheduled time; the scheduler polls at intervals (default 5 seconds), meaning there can be delays, as admitted in the delayed jobs section where it states jobs fire after the time has passed.
Requires careful setup with Rake tasks, environment variables, and optional dynamic scheduling enablement, which can be error-prone for new users, as shown in the installation and configuration examples.
Tightly coupled with Resque and Ruby, making it unsuitable for projects using other job queues or polyglot architectures, and it adds dependencies on Redis and specific gem versions.
If the scheduler process is down, missed scheduled jobs are not recovered upon restart, unlike delayed jobs, which can lead to gaps in periodic tasks, as noted in the redundancy section.