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-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",
# ...
}
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-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",
}