Provides job scheduling capabilities to RQ (Redis Queue)
Project description
RQ Scheduler
RQ Scheduler is a small package that adds job scheduling capabilities to RQ, a Redis based Python queuing library.
Requirements
Installation
You can install RQ Scheduler via pip:
pip install rq-scheduler
Usage
Schedule a job involves doing two different things: # Putting a job in the scheduler # Running a scheduler that will move scheduled jobs into queues when the time comes
Scheduling a Job
There are two ways you can schedule a job. The first is using RQ Scheduler’s enqueue_at:
from rq import use_connection from rq_scheduler import Scheduler from datetime import datetime use_connection() # Use RQ's default Redis connection scheduler = Scheduler() # Get a scheduler for the "default" queue # Puts a job into the scheduler. The API is similar to RQ except that it # takes a datetime object as first argument. So for example to schedule a # job to run on Jan 1st 2020 we do: scheduler.enqueue_at(datetime(2020, 1, 1), func) # Here's another example scheduling a job to run at a specific date and time, # complete with args and kwargs scheduler.enqueue_at(datetime(2020, 1, 1, 3, 4), func, foo, bar=baz)
The second way is using enqueue_in. Instead of taking a datetime object, this method expects a timedelta and schedules the job to run at X seconds/minutes/hours/days/weeks later. For example, if we want to monitor how popular a tweet is a few times during the course of the day, we could do something like:
from datetime import timedelta # Schedule a job to run 10 minutes, 1 hour and 1 day later scheduler.enqueue_in(timedelta(minutes=10), count_retweets, tweet_id) scheduler.enqueue_in(timedelta(hours=1), count_retweets, tweet_id) scheduler.enqueue_in(timedelta(days=1), count_retweets, tweet_id)
You can also explicitly pass in connection to use a different Redis server:
from redis import Redis from rq_scheduler import Scheduler from datetime import datetime scheduler = Scheduler('default', connection=Redis('192.168.1.3', port=123)) scheduler.enqueue_at(datetime(2020, 01, 01, 1, 1), func)
Running the scheduler
RQ Scheduler comes with a script rqscheduler that runs a scheduler process that polls Redis once every minute and move scheduled jobs to the relevant queues when they need to be executed:
# This runs a scheduler process using the default Redis connection rqscheduler
If you want to use a different Redis server you could also do:
rqscheduler --host localhost --port 6379 --db 0
The script accepts these arguments:
-H or --host: Redis server to connect to
-p or --port: port to connect to
-d or --db: Redis db to use
-P or --password: password to connect to Redis
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file rq-scheduler-0.2.0.tar.gz
.
File metadata
- Download URL: rq-scheduler-0.2.0.tar.gz
- Upload date:
- Size: 5.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ff08d9007aed9f726215a0c8e13baba64a3ad03d018ab59a2a5fa7dda9860df4 |
|
MD5 | a5be94260a40504bfdd29438c13b3081 |
|
BLAKE2b-256 | 278cb304db373427badcdfe613fa8e88a963cfc1c01213b4b6cadda9bcf55523 |