paper-rq


Namepaper-rq JSON
Version 0.8.5 PyPI version JSON
download
home_pagehttps://github.com/dldevinc/paper-rq
SummaryAn administrative interface for managing RQ tasks in Paper Admin
upload_time2024-12-19 23:06:17
maintainerMihail Mishakin
docs_urlNone
authorMihail Mishakin
requires_python>=3.7
licenseBSD license
keywords
VCS
bugtrack_url
requirements rq-scheduler pytest pytest-cov pytest-django pytest-xdist
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # 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.

[![PyPI](https://img.shields.io/pypi/v/paper-rq.svg)](https://pypi.org/project/paper-rq/)
[![Build Status](https://github.com/dldevinc/paper-admin/actions/workflows/release.yml/badge.svg)](https://github.com/dldevinc/paper-rq)
[![Software license](https://img.shields.io/pypi/l/paper-rq.svg)](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

[![4d17958f25.png](https://i.postimg.cc/mgzCsHVG/4d17958f25.png)](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[![PyPI](https://img.shields.io/pypi/v/paper-rq.svg)](https://pypi.org/project/paper-rq/)\n[![Build Status](https://github.com/dldevinc/paper-admin/actions/workflows/release.yml/badge.svg)](https://github.com/dldevinc/paper-rq)\n[![Software license](https://img.shields.io/pypi/l/paper-rq.svg)](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[![4d17958f25.png](https://i.postimg.cc/mgzCsHVG/4d17958f25.png)](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"
}
        
Elapsed time: 0.36942s