Skip to main content

Celery Integration For Fastack

Project description

fastack-celery

Simple package to integrate celery with fastack.

To-do

There are several to-do lists for the future

Installation

pip install fastack-celery

Usage

Create celery app

Copy the code below and put it in app/main.py:

from fastack_celery import make_celery
celery = make_celery(app)

You can also pass parameters to the celery app.

Configuration

For celery configuration, you can create it via Celery class in your app settings. For example:

# app/settings/local.py
class Celery:
    broker_url = "amqp://strong_user:strong_password@localhost:5672/celery_vhost"
    result_backend = "redis://localhost:6900/0"

For other celery configurations, see here https://docs.celeryproject.org/en/stable/userguide/configuration.html#new-lowercase-settings

Create a task

You can create tasks using the shared_task decorator:

# app/tasks.py

# Sample task from examples/celery/app/tasks.py
@shared_task
def counter_task(id: int):
    session = db.open()
    with session.begin():
        obj: Counter = session.query(Counter).where(Counter.id == id).first()
        if obj:
            print(f"start counting #{id}")
            obj.counter += 1
            state = obj.state
            if state is None or state == Counter.State.NOT_IN_QUEUE:
                obj.state = Counter.State.NOT_IN_QUEUE
            elif state == Counter.State.TERMINATED:
                task_id = obj.task_id  # or current_task.request.id
                celery.control.revoke(task_id, terminate=True)
                obj.task_id = None
            else:
                obj.state = Counter.State.IN_QUEUE
                counter_task.apply_async(args=(id,), countdown=1, task_id=obj.task_id)

            obj.save(session)

        else:
            print(f"Object with id #{id} not found")

By default, all tasks must be stored in app/tasks.py which will be automatically imported by the make_celery function.

Running celery workers

cd your-project
celery -A app.main:celery worker -l info

Download files

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

Source Distribution

fastack-celery-0.1.0.tar.gz (3.7 kB view details)

Uploaded Source

Built Distribution

fastack_celery-0.1.0-py3-none-any.whl (3.5 kB view details)

Uploaded Python 3

File details

Details for the file fastack-celery-0.1.0.tar.gz.

File metadata

  • Download URL: fastack-celery-0.1.0.tar.gz
  • Upload date:
  • Size: 3.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.12 CPython/3.8.10 Linux/5.11.0-46-generic

File hashes

Hashes for fastack-celery-0.1.0.tar.gz
Algorithm Hash digest
SHA256 3e2e4e8e5d1d76bded23bea90c86cf0676b0e33cc17708b0f28e2c01d2884b43
MD5 8a060250ca2dd392eeffc586071bc00c
BLAKE2b-256 6e5e3a178ffe6c0abe69d1fa35ce79f937fbfd11f64f2ecce609f2837a3c8160

See more details on using hashes here.

File details

Details for the file fastack_celery-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: fastack_celery-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 3.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.12 CPython/3.8.10 Linux/5.11.0-46-generic

File hashes

Hashes for fastack_celery-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5e1962fc29fe99c4e7ff281c40586929e875a24ac9ade3571bd2e714b1deea60
MD5 847b40e4da28bc52bdfd4ac7f7a740fb
BLAKE2b-256 10be970fd9ab645edde8188a237b9e258d94b9fc98fb8f6a3098fd95fe5823c6

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