celery
What's a Task Queue?
Task queues are used as a mechanism to distribute work across threads or machines.
A task queue's input is a unit of work called a task. Dedicated worker processes constantly monitor task queues for new work to perform.
Celery communicates via messages, usually using a broker to mediate between clients adn workers. To initiate a task the client adds a message to the queue, the broker then dilivers that message to a worker.
A Celery system can consist of multiple workers and brokers, giving way to high avaliability and horizontal scaling.
Features
Monitoring
Scheduling
Work-flows
Resource Leak Protection
Time & Rate Limits
User Components
First Steps with Celery
pip install celery
pip install redis
# RabbitMQ
sudo docker run -it -d --name rabbitmq -p 5672:5672 rabbitmq
# Redis
sudo docker run -it -d --name redis -p 6379:6379 redis
# Docker 查看端口
sudo docker port rabbitmq
# Docker 查看日志
sudo docker logs rabbitmq
# 进入 Docker
sudo docker exec -it rabbitmq bash
# RabbitMQ 运维
rabbitmqctl --help
# foo.py
from celery import Celery
app = Celery('foo', broker='pyamqp://[email protected]//', backend='redis://127.0.0.1')
@app.task
def add(x, y):
return x + y
# 启动worker服务
celery worker -A foo --loglevel=info
# calling
from foo import add
ret = add.deley(1,2)
Last updated