Skip to main content

Litestar integration for SAQ

Project description

Litestar SAQ

[!IMPORTANT] This plugin currently contains minimal features and is a work-in-progress

Installation

pip install litestar-saq

Usage

Here is a basic application that demonstrates how to use the plugin.

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:

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.

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(
    ....
)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

litestar_saq-0.2.0.tar.gz (85.1 kB view details)

Uploaded Source

Built Distribution

litestar_saq-0.2.0-py3-none-any.whl (14.4 kB view details)

Uploaded Python 3

File details

Details for the file litestar_saq-0.2.0.tar.gz.

File metadata

  • Download URL: litestar_saq-0.2.0.tar.gz
  • Upload date:
  • Size: 85.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.5

File hashes

Hashes for litestar_saq-0.2.0.tar.gz
Algorithm Hash digest
SHA256 d2b2301198b4d36325e2a8f1e612e42485e4472e8f660562631ad2d65636de64
MD5 3132424f67aec8a9ed5927a8628f387e
BLAKE2b-256 d96914d1dc2699bea08f94d767c57c571fb3e527c0efab89c71a670aae9d7a2c

See more details on using hashes here.

File details

Details for the file litestar_saq-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: litestar_saq-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 14.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.5

File hashes

Hashes for litestar_saq-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 eb92845e9ae66eb1b9a19a34df353acbf64b5de8ae192859d9f46a8f06a25cb4
MD5 b174c1247b57060445e5295457451063
BLAKE2b-256 268216186d660b71c9c49ac1408aca6e031ec3b82517a69c3fc3449ef7de3dd3

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page