An administrative interface for managing RQ tasks in Paper Admin.
⚠ Default rq.scheduler is not supported! Use rq-scheduler instead.
paper-admin>= 6.0django-rq>= 2.4python>= 3.7
Install the latest release with pip:
pip install paper-rqAdd 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",
# ...
}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)First, ensure that you have the rq-scheduler library installed:
pip install rq-schedulerIf 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",
}