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
- See #1
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
Project details
Release history Release notifications | RSS feed
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 hashes)
Built Distribution
Close
Hashes for fastack_celery-0.1.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5e1962fc29fe99c4e7ff281c40586929e875a24ac9ade3571bd2e714b1deea60 |
|
MD5 | 847b40e4da28bc52bdfd4ac7f7a740fb |
|
BLAKE2b-256 | 10be970fd9ab645edde8188a237b9e258d94b9fc98fb8f6a3098fd95fe5823c6 |