Celery
Celery
是一个基于 Python
开发的分布式异步消息任务队列,通过它可以轻松的实现任务的异步处理
看看如何 Celery
跟 Sanic
一起使用
使用
使用的组件
1 2 3 4
| sanic==21.12.1 celery==5.2.3 redis==4.1.4 flower==1.0.0
|
tasks/task.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| import time
from celery import Celery
REDIS_URI = "127.0.0.1" REDIS_PORT = 6379 REDIS_DB = 0
app = Celery( "tasks", broker=f"redis://{REDIS_URI}:{REDIS_PORT}/{REDIS_DB}", backend=f"redis://{REDIS_URI}:{REDIS_PORT}/{REDIS_DB}", )
@app.task def run_task(name): time.sleep(5) return "Hello, {}!".format(name)
|
server.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| from sanic import Sanic from sanic.response import text
from tasks.task import run_task
app = Sanic("MyHelloWorldApp")
@app.post("/start_task") async def start_task(request): result = run_task.delay("jakehu") print(result) return text("Task started.")
if __name__ == "__main__": app.run(host="0.0.0.0", debug=True, auto_reload=True)
|
worker.py
1
| from tasks.task import app
|
运行 worker
进程
1
| celery -A worker:app worker --loglevel=info --concurrency=1
|
Flower
Flower
是基于 web 的监控和管理 Celery
的工具
使用
1
| celery --broker=redis://127.0.0.1:6379/0 flower --port=5566
|
Celery 参考文档
Flower 参考文档