Skip to main content

A database backed job scheduler for Django RQ with Django

Project description

Django RQ Scheduler

Django CI badge

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

  1. Use pip to install:
pip install django-rq-scheduler
  1. In settings.py, add django_rq and scheduler to INSTALLED_APPS:

    INSTALLED_APPS = [
        ...
        'django_rq',
        'scheduler',
        ...
    ]
    
  2. 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,
      },
    }
    
  3. 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

from django_rq import job

@job
def count():
    return 1 + 1

Scheduling a Job

Scheduled Job

  1. Sign into the Django Admin site, http://localhost:8000/admin/ and locate the Django RQ Scheduler section.

  2. Click on the Add link for Scheduled Job.

  3. Enter a unique name for the job in the Name field.

  4. 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

  5. Choose your Queue. Side Note: The queues listed are defined in the Django Settings.

  6. 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.

  7. Click the Save button to schedule the job.

Repeatable Job

  1. Sign into the Django Admin site, http://localhost:8000/admin/ and locate the Django RQ Scheduler section.

  2. Click on the Add link for Repeatable Job

  3. Enter a unique name for the job in the Name field.

  4. 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

  5. Choose your Queue. Side Note: The queues listed are defined in the Django Settings.

  6. 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.

  7. Enter an Interval, and choose the Interval unit. This will calculate the time before the function is called again.

  8. In the Repeat field, enter the number of time the job is to be ran. Leaving the field empty, means the job will be scheduled to run forever.

  9. Click the Save button to schedule the job.

Advanced usage using jobs with args

django-rq-scheduler supports

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

  1. Sign into the Django Admin site, http://localhost:8000/admin/ and locate the Django RQ Scheduler section.

  2. Click on the Add link for Scheduled Job.

  3. Enter a unique name for the job in the Name field.

  4. 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

  5. Choose your Queue. Side Note: The queues listed are defined in the Django Settings.

  6. 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.

  7. Click the Save button to schedule the job.

  8. Add arguments to the job, pick argument type.

  9. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-rq-scheduler-2022.7.tar.gz (16.0 kB view details)

Uploaded Source

Built Distribution

django_rq_scheduler-2022.7-py3-none-any.whl (17.7 kB view details)

Uploaded Python 3

File details

Details for the file django-rq-scheduler-2022.7.tar.gz.

File metadata

  • Download URL: django-rq-scheduler-2022.7.tar.gz
  • Upload date:
  • Size: 16.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for django-rq-scheduler-2022.7.tar.gz
Algorithm Hash digest
SHA256 d6dada1b7e68cc1bbcf58e9d8da4c51056029e49a2de22f74395abb868ce1038
MD5 2078430c068f851e2fa451a5dafe9f12
BLAKE2b-256 92325373aee680ce09da0c22b1979df47a0650f95239d0fad3b0f7f1eab54242

See more details on using hashes here.

File details

Details for the file django_rq_scheduler-2022.7-py3-none-any.whl.

File metadata

File hashes

Hashes for django_rq_scheduler-2022.7-py3-none-any.whl
Algorithm Hash digest
SHA256 e5f81ddb7f2ffb8e09c601b6bc9a913107ad9e1a911daeb7ffac7c3177b07d5d
MD5 2a32f067b7fa2094d6e9780cc205ccc4
BLAKE2b-256 a09744ac38430fe1d2a253d344064b381b61714aa87835246b5da4d6b9def178

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page