# paper-rq
An administrative interface for managing RQ tasks in Paper Admin.
⚠ Default `rq.scheduler` is not supported! Use [rq-scheduler](https://github.com/rq/rq-scheduler) instead.
[](https://pypi.org/project/paper-rq/)
[](https://github.com/dldevinc/paper-rq)
[](https://pypi.org/project/paper-rq/)
## Compatibility
- [`paper-admin`](https://github.com/dldevinc/paper-admin) >= 6.0
- [`django-rq`](https://github.com/rq/django-rq) >= 2.4
- `python` >= 3.7
## Installation
Install the latest release with pip:
```shell
pip install paper-rq
```
Add `paper_rq` to your INSTALLED_APPS in django's `settings.py`:
```python
INSTALLED_APPS = (
# ...
"paper_rq",
)
```
Add `paper_rq` to your `PAPER_MENU`:
```python
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:
```python
RQ = {
"JOB_CLASS": "paper_rq.jobs.Job",
# ...
}
```
## Result
[](https://postimg.cc/tsbYd7Lr)
## `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:
```python
import time
from paper_rq.decorators import job
@job("paper:default")
def sleep(delay):
time.sleep(delay)
```
```python
sleep.delay(5)
```
## RQ Scheduler
First, ensure that you have the `rq-scheduler` library installed:
```shell
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:
```python
# 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",
}
```
Raw data
{
"_id": null,
"home_page": "https://github.com/dldevinc/paper-rq",
"name": "paper-rq",
"maintainer": "Mihail Mishakin",
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": "x896321475@gmail.com",
"keywords": null,
"author": "Mihail Mishakin",
"author_email": "x896321475@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/06/03/480c1a04595943a60f5aa3c9be2e227c784aa37726f1be9f9c4f641ba33f/paper_rq-0.8.5.tar.gz",
"platform": "OS Independent",
"description": "# paper-rq\n\nAn administrative interface for managing RQ tasks in Paper Admin.\n\n\u26a0 Default `rq.scheduler` is not supported! Use [rq-scheduler](https://github.com/rq/rq-scheduler) instead.\n\n[](https://pypi.org/project/paper-rq/)\n[](https://github.com/dldevinc/paper-rq)\n[](https://pypi.org/project/paper-rq/)\n\n## Compatibility\n\n- [`paper-admin`](https://github.com/dldevinc/paper-admin) >= 6.0\n- [`django-rq`](https://github.com/rq/django-rq) >= 2.4\n- `python` >= 3.7\n\n## Installation\n\nInstall the latest release with pip:\n\n```shell\npip install paper-rq\n```\n\nAdd `paper_rq` to your INSTALLED_APPS in django's `settings.py`:\n\n```python\nINSTALLED_APPS = (\n # ...\n \"paper_rq\",\n)\n```\n\nAdd `paper_rq` to your `PAPER_MENU`:\n\n```python\nfrom paper_admin.menu import Item\n\nPAPER_MENU = [\n # ...\n Item(\n app=\"paper_rq\",\n icon=\"bi-clock-history\",\n ),\n # ...\n]\n```\n\nOptionally, set `paper_rq.jobs.Job` as your job class:\n\n```python\nRQ = {\n \"JOB_CLASS\": \"paper_rq.jobs.Job\",\n # ...\n}\n```\n\n## Result\n\n[](https://postimg.cc/tsbYd7Lr)\n\n## `job` decorator\n\nThe same as RQ's `job` decorator, but it automatically works out\nthe `connection` argument from RQ_QUEUES. It also respects the\n`RQ.DEFAULT_RESULT_TTL` and `RQ.DEFAULT_FAILURE_TTL` settings.\n\nExample:\n```python\nimport time\n\nfrom paper_rq.decorators import job\n\n\n@job(\"paper:default\")\ndef sleep(delay):\n time.sleep(delay)\n```\n\n```python\nsleep.delay(5)\n```\n\n## RQ Scheduler\n\nFirst, ensure that you have the `rq-scheduler` library installed:\n\n```shell\npip install rq-scheduler\n```\n\nIf you need to run multiple isolated schedulers on the same server, you should\nuse the class `paper_rq.scheduler.Scheduler`. This class reads the Redis keys \nfrom the `RQ` settings:\n\n```python\n# settings.py\n\nRQ = {\n \"JOB_CLASS\": \"paper_rq.jobs.Job\",\n \"DEFAULT_RESULT_TTL\": \"7d\",\n \"DEFAULT_FAILURE_TTL\": \"30d\",\n \"SCHEDULER_CLASS\": \"paper_rq.scheduler.Scheduler\",\n \"SCHEDULER_LOCK_KEY\": \"rq:scheduler-1:scheduler_lock\",\n \"SCHEDULER_JOBS_KEY\": \"rq:scheduler-1:scheduled_jobs\",\n}\n```\n",
"bugtrack_url": null,
"license": "BSD license",
"summary": "An administrative interface for managing RQ tasks in Paper Admin",
"version": "0.8.5",
"project_urls": {
"Homepage": "https://github.com/dldevinc/paper-rq"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "814c2d49a8ce463bfc834892f4bfdc13ff40dbed199c00ea80a438bbb14a484b",
"md5": "8f4f3e907b8021926af8aaed7a4a35f1",
"sha256": "7dcfc0a5f1d138d1d9e2920e3589dabc28b2cfd6c069edf359fb98183ff0b30d"
},
"downloads": -1,
"filename": "paper_rq-0.8.5-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "8f4f3e907b8021926af8aaed7a4a35f1",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">=3.7",
"size": 24911,
"upload_time": "2024-12-19T23:06:15",
"upload_time_iso_8601": "2024-12-19T23:06:15.390603Z",
"url": "https://files.pythonhosted.org/packages/81/4c/2d49a8ce463bfc834892f4bfdc13ff40dbed199c00ea80a438bbb14a484b/paper_rq-0.8.5-py2.py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "0603480c1a04595943a60f5aa3c9be2e227c784aa37726f1be9f9c4f641ba33f",
"md5": "f0d39429d69f7f3d4f53cfba26eb62b8",
"sha256": "d9e39bd6e6995ecb2e4834e75c9234887724f688ab482780d37c776cbbed105a"
},
"downloads": -1,
"filename": "paper_rq-0.8.5.tar.gz",
"has_sig": false,
"md5_digest": "f0d39429d69f7f3d4f53cfba26eb62b8",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 22861,
"upload_time": "2024-12-19T23:06:17",
"upload_time_iso_8601": "2024-12-19T23:06:17.955291Z",
"url": "https://files.pythonhosted.org/packages/06/03/480c1a04595943a60f5aa3c9be2e227c784aa37726f1be9f9c4f641ba33f/paper_rq-0.8.5.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-12-19 23:06:17",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "dldevinc",
"github_project": "paper-rq",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "rq-scheduler",
"specs": [
[
"==",
"0.13.1"
]
]
},
{
"name": "pytest",
"specs": [
[
"==",
"7.3.1"
]
]
},
{
"name": "pytest-cov",
"specs": [
[
"==",
"4.1.0"
]
]
},
{
"name": "pytest-django",
"specs": [
[
"==",
"4.5.2"
]
]
},
{
"name": "pytest-xdist",
"specs": [
[
"==",
"3.3.1"
]
]
}
],
"tox": true,
"lcname": "paper-rq"
}