Name | litestar-saq JSON |
Version |
0.2.0
JSON |
| download |
home_page | None |
Summary | Litestar integration for SAQ |
upload_time | 2024-09-03 21:13:13 |
maintainer | None |
docs_url | None |
author | None |
requires_python | >=3.8 |
license | MIT |
keywords |
litestar
saq
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# Litestar SAQ
> [!IMPORTANT]
> This plugin currently contains minimal features and is a work-in-progress
## Installation
```shell
pip install litestar-saq
```
## Usage
Here is a basic application that demonstrates how to use the plugin.
```python
from __future__ import annotations
from litestar import Litestar
from litestar_saq import QueueConfig, SAQConfig, SAQPlugin
saq = SAQPlugin(config=SAQConfig(redis_url="redis://localhost:6397/0", queue_configs=[QueueConfig(name="samples")]))
app = Litestar(plugins=[saq])
```
You can start a background worker with the following command now:
```shell
litestar --app-dir=examples/ --app basic:app workers run
Using Litestar app from env: 'basic:app'
Starting SAQ Workers ──────────────────────────────────────────────────────────────────
INFO - 2023-10-04 17:39:03,255 - saq - worker - Worker starting: Queue<redis=Redis<ConnectionPool<Connection<host=localhost,port=6397,db=0>>>, name='samples'>
INFO - 2023-10-04 17:39:06,545 - saq - worker - Worker shutting down
```
You can also start the process for only specific queues. This is helpful if you want separated processes working on different queues instead of combining them.
```shell
litestar --app-dir=examples/ --app basic:app workers run --queues sample
Using Litestar app from env: 'basic:app'
Starting SAQ Workers ──────────────────────────────────────────────────────────────────
INFO - 2023-10-04 17:39:03,255 - saq - worker - Worker starting: Queue<redis=Redis<ConnectionPool<Connection<host=localhost,port=6397,db=0>>>, name='samples'>
INFO - 2023-10-04 17:39:06,545 - saq - worker - Worker shutting down
```
If you are starting the process for only specific queues and still want to read from the other queues or enqueue a task into another queue that was not initialized in your worker or is found somewhere else, you can do so like here
```
import os
from saq import Queue
def get_queue_directly(queue_name: str, redis_url: str) -> Queue:
return Queue.from_url(redis_url, name=queue_name)
redis_url = os.getenv("REDIS_URL")
queue = get_queue_directly("queue-in-other-process", redis_url)
# Get queue info
info = await queue.info(jobs=True)
# Enqueue new task
queue.enqueue(
....
)
```
Raw data
{
"_id": null,
"home_page": null,
"name": "litestar-saq",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "litestar, saq",
"author": null,
"author_email": "Cody Fincher <cody.fincher@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/d9/69/14d1dc2699bea08f94d767c57c571fb3e527c0efab89c71a670aae9d7a2c/litestar_saq-0.2.0.tar.gz",
"platform": null,
"description": "# Litestar SAQ\n\n> [!IMPORTANT]\n> This plugin currently contains minimal features and is a work-in-progress\n\n## Installation\n\n```shell\npip install litestar-saq\n```\n\n## Usage\n\nHere is a basic application that demonstrates how to use the plugin.\n\n```python\nfrom __future__ import annotations\n\nfrom litestar import Litestar\n\nfrom litestar_saq import QueueConfig, SAQConfig, SAQPlugin\n\nsaq = SAQPlugin(config=SAQConfig(redis_url=\"redis://localhost:6397/0\", queue_configs=[QueueConfig(name=\"samples\")]))\napp = Litestar(plugins=[saq])\n\n\n```\n\nYou can start a background worker with the following command now:\n\n```shell\nlitestar --app-dir=examples/ --app basic:app workers run\nUsing Litestar app from env: 'basic:app'\nStarting SAQ Workers \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nINFO - 2023-10-04 17:39:03,255 - saq - worker - Worker starting: Queue<redis=Redis<ConnectionPool<Connection<host=localhost,port=6397,db=0>>>, name='samples'>\nINFO - 2023-10-04 17:39:06,545 - saq - worker - Worker shutting down\n```\n\nYou can also start the process for only specific queues. This is helpful if you want separated processes working on different queues instead of combining them.\n\n```shell\nlitestar --app-dir=examples/ --app basic:app workers run --queues sample\nUsing Litestar app from env: 'basic:app'\nStarting SAQ Workers \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nINFO - 2023-10-04 17:39:03,255 - saq - worker - Worker starting: Queue<redis=Redis<ConnectionPool<Connection<host=localhost,port=6397,db=0>>>, name='samples'>\nINFO - 2023-10-04 17:39:06,545 - saq - worker - Worker shutting down\n```\n\nIf you are starting the process for only specific queues and still want to read from the other queues or enqueue a task into another queue that was not initialized in your worker or is found somewhere else, you can do so like here\n\n```\nimport os\nfrom saq import Queue\n\n\ndef get_queue_directly(queue_name: str, redis_url: str) -> Queue:\n return Queue.from_url(redis_url, name=queue_name)\n\nredis_url = os.getenv(\"REDIS_URL\")\nqueue = get_queue_directly(\"queue-in-other-process\", redis_url)\n# Get queue info\ninfo = await queue.info(jobs=True)\n# Enqueue new task\nqueue.enqueue(\n ....\n)\n```\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Litestar integration for SAQ",
"version": "0.2.0",
"project_urls": {
"Changelog": "https://cofin.github.io/litesatr-saq/latest/changelog",
"Discord": "https://discord.gg/X3FJqy8d2j",
"Documentation": "https://cofin.github.io/litesatr-saq/latest/",
"Homepage": "https://cofin.github.io/litesatr-saq/latest/",
"Issue": "https://github.com/cofin/litestar-saq/issues/",
"Source": "https://github.com/cofin/litestar-saq"
},
"split_keywords": [
"litestar",
" saq"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "268216186d660b71c9c49ac1408aca6e031ec3b82517a69c3fc3449ef7de3dd3",
"md5": "b174c1247b57060445e5295457451063",
"sha256": "eb92845e9ae66eb1b9a19a34df353acbf64b5de8ae192859d9f46a8f06a25cb4"
},
"downloads": -1,
"filename": "litestar_saq-0.2.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "b174c1247b57060445e5295457451063",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 14432,
"upload_time": "2024-09-03T21:13:11",
"upload_time_iso_8601": "2024-09-03T21:13:11.893760Z",
"url": "https://files.pythonhosted.org/packages/26/82/16186d660b71c9c49ac1408aca6e031ec3b82517a69c3fc3449ef7de3dd3/litestar_saq-0.2.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "d96914d1dc2699bea08f94d767c57c571fb3e527c0efab89c71a670aae9d7a2c",
"md5": "3132424f67aec8a9ed5927a8628f387e",
"sha256": "d2b2301198b4d36325e2a8f1e612e42485e4472e8f660562631ad2d65636de64"
},
"downloads": -1,
"filename": "litestar_saq-0.2.0.tar.gz",
"has_sig": false,
"md5_digest": "3132424f67aec8a9ed5927a8628f387e",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 85053,
"upload_time": "2024-09-03T21:13:13",
"upload_time_iso_8601": "2024-09-03T21:13:13.072793Z",
"url": "https://files.pythonhosted.org/packages/d9/69/14d1dc2699bea08f94d767c57c571fb3e527c0efab89c71a670aae9d7a2c/litestar_saq-0.2.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-09-03 21:13:13",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "cofin",
"github_project": "litestar-saq",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "litestar-saq"
}