Skip to content

dldevinc/paper-rq

Repository files navigation

paper-rq

An administrative interface for managing RQ tasks in Paper Admin.

⚠ Default rq.scheduler is not supported! Use rq-scheduler instead.

PyPI Build Status Software license

Compatibility

Installation

Install the latest release with pip:

pip install paper-rq

Add paper_rq to your INSTALLED_APPS in django's settings.py:

INSTALLED_APPS = (
    # ...
    "paper_rq",
)

Add paper_rq to your PAPER_MENU:

from paper_admin.menu import Item

PAPER_MENU = [
    # ...
    Item(
        app="paper_rq",
        icon="bi-clock-history",
    ),
    # ...
]

Optionally, set paper_rq.jobs.Job as your job class:

RQ = {
    "JOB_CLASS": "paper_rq.jobs.Job",
    # ...
}

Result

4d17958f25.png

job decorator

The same as RQ's job decorator, but it automatically works out the connection argument from RQ_QUEUES. It also respects the RQ.DEFAULT_RESULT_TTL and RQ.DEFAULT_FAILURE_TTL settings.

Example:

import time

from paper_rq.decorators import job


@job("paper:default")
def sleep(delay):
    time.sleep(delay)
sleep.delay(5)

RQ Scheduler

First, ensure that you have the rq-scheduler library installed:

pip install rq-scheduler

If you need to run multiple isolated schedulers on the same server, you should use the class paper_rq.scheduler.Scheduler. This class reads the Redis keys from the RQ settings:

# settings.py

RQ = {
    "JOB_CLASS": "paper_rq.jobs.Job",
    "DEFAULT_RESULT_TTL": "7d",
    "DEFAULT_FAILURE_TTL": "30d",
    "SCHEDULER_CLASS": "paper_rq.scheduler.Scheduler",
    "SCHEDULER_LOCK_KEY": "rq:scheduler-1:scheduler_lock",
    "SCHEDULER_JOBS_KEY": "rq:scheduler-1:scheduled_jobs",
}

About

An administrative interface for managing RQ tasks in Paper Admin

Resources

License

Stars

Watchers

Forks

Packages

No packages published