A database backed job scheduler for Django RQ with Django
Project description
Django RQ Scheduler
Notice: Starting v2023.1, requirement for rq_scheduler was removed and instead one of the django-rq workers should run with
--with-scheduler
parameter as mentioned here.
A database backed job scheduler for Django RQ. Based on original django-rq-scheduler - Now supports Django 4.0.
This allows remembering scheduled jobs, their parameters, etc.
Installation
- Use pip to install:
pip install django-rq-scheduler
- In
settings.py
, adddjango_rq
andscheduler
toINSTALLED_APPS
:
INSTALLED_APPS = [
...
'django_rq',
'scheduler',
...
]
-
Configure Django RQ. See https://github.com/ui/django-rq#installation
Add at least one Redis Queue to your
settings.py
:
RQ_QUEUES = {
'default': {
'HOST': 'localhost',
'PORT': 6379,
'DB': 0,
'PASSWORD': 'some-password',
'DEFAULT_TIMEOUT': 360,
},
}
- Run migrations.
./manage.py migrate
Usage
Making a method in your code a schedulable job to be run by a worker.
See http://python-rq.org/docs/jobs/ or https://github.com/ui/django-rq#job-decorator
An example (myapp/jobs.py file):
from django_rq import job
@job
def count():
return 1 + 1
Scheduling a Job
Scheduled Job
- Sign in to the Django Admin site, http://localhost:8000/admin/ and locate the Django RQ Scheduler section.
- Click on the Add link for Scheduled Job.
- Enter a unique name for the job in the Name field.
- In the Callable field, enter a Python dot notation path to the method that defines the job. For the example above, that would be
myapp.jobs.count
- Choose your Queue. Side Note: The queues listed are defined in the Django Settings.
- Enter the time the job is to be executed in the Scheduled time field. Side Note: Enter the date via the browser's local timezone, the time will automatically convert UTC.
- Click the Save button to schedule the job.
Repeatable Job
- Sign in to the Django Admin site, http://localhost:8000/admin/ and locate the Django RQ Scheduler section.
- Click on the Add link for Repeatable Job
- Enter a unique name for the job in the Name field.
- In the Callable field, enter a Python dot notation path to the method that defines the job. For the example above, that would be
myapp.jobs.count
- Choose your Queue. Side Note: The queues listed are defined in the Django Settings.
- Enter the time the first job is to be executed in the Scheduled time field. Side Note: Enter the date via the browser's local timezone, the time will automatically convert UTC.
- Enter an Interval, and choose the Interval unit. This will calculate the time before the function is called again.
- In the Repeat field, enter the number of time the job is to be run. Leaving the field empty, means the job will be scheduled to run forever.
- Click the Save button to schedule the job.
Advanced usage using jobs with args
django-rq-scheduler supports scheduling jobs with arguments, as long as the arguments do need to be calculated in run-time.
from django_rq import job
@job
def job_args_kwargs(*args, **kwargs):
func = "test_args_kwargs({})"
args_list = [repr(arg) for arg in args]
kwargs_list = [k + '=' + repr(v) for (k, v) in kwargs.items()]
return func.format(', '.join(args_list + kwargs_list))
Schedule job with custom arguments to be calculated when scheduling
-
Sign in to the Django Admin site, http://localhost:8000/admin/ and locate the Django RQ Scheduler section.
-
Click on the Add link for Scheduled Job.
-
Enter a unique name for the job in the Name field.
-
In the Callable field, enter a Python dot notation path to the method that defines the job. For the example above, that would be
myapp.jobs.job_args_kwargs
-
Choose your Queue. Side Note: The queues listed are defined in the Django Settings.
-
Enter the time the job is to be executed in the Scheduled time field. Side Note: Enter the date via the browser's local timezone, the time will automatically convert UTC.
-
Click the Save button to schedule the job.
-
Add arguments to the job, pick argument type.
-
Add arguments with keys to the job, pick argument type and value.
Reporting issues or Features requests
Please report issues via GitHub Issues .
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
Built Distribution
Hashes for django_rq_scheduler-2023.2.1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | b9c19bee6518283d7fb42218f766de6baff61c1aaf2dd4947df9817cbde29448 |
|
MD5 | 0b38b35aef399721c6d3b3f21cf23d49 |
|
BLAKE2b-256 | b7923ca55f09fa3894679feb6d315a3b796a39f5e2c3fead5929c54a088458cf |
Hashes for django_rq_scheduler-2023.2.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9d3b558df8fb2cd984b16d832c1a2c0f27c38c8c66facfd7bbec100d3a632c7b |
|
MD5 | 1f05c5253228ab8e908b1e8c35ecf853 |
|
BLAKE2b-256 | 978ea05869ba2064f31d5a24cca37fbb32cefeb7c4a11b79b445c8443c3d8935 |