1 介绍
2 demo
初始化虚环境,同时安装包
python3 -m venv myenv
source myenv/bin/activate
pip install celery[redis]
写几个文件
# celery_app.py
from celery import Celery
app = Celery('my_project', broker='redis://localhost:6379/0', backend='redis://localhost:6379/0')
app.autodiscover_tasks(['tasks'])
# main.py
from tasks import add
result = add.delay(4, 4)
print(result.get(timeout=10)) # 等待任务执行完成并获取结果
# tasks.py
from celery_app import app
@app.task
def add(x, y):
return x + y
执行
# 第一个终端
celery -A celery_app worker --loglevel=info
输出:
-------------- celery@k8s-master-node v5.5.3 (immunity)
--- ***** -----
-- ******* ---- Linux-6.8.0-62-generic-x86_64-with-glibc2.39 2025-06-29 22:32:02
- *** --- * ---
- ** ---------- [config]
- ** ---------- .> app: my_project:0x786f77f4e4b0
- ** ---------- .> transport: redis://localhost:6379/0
- ** ---------- .> results: redis://localhost:6379/0
- *** --- * --- .> concurrency: 16 (prefork)
-- ******* ---- .> task events: OFF (enable -E to monitor tasks in this worker)
--- ***** -----
-------------- [queues]
.> celery exchange=celery(direct) key=celery
[tasks]
. tasks.add
[2025-06-29 22:32:02,721: INFO/MainProcess] Connected to redis://localhost:6379/0
[2025-06-29 22:32:02,722: INFO/MainProcess] mingle: searching for neighbors
[2025-06-29 22:32:03,727: INFO/MainProcess] mingle: all alone
[2025-06-29 22:32:03,733: INFO/MainProcess] celery@k8s-master-node ready.
[2025-06-29 22:32:06,221: INFO/MainProcess] Task tasks.add[e96d2a56-f9f3-433d-9900-19890927d644] received
[2025-06-29 22:32:06,224: INFO/ForkPoolWorker-16] Task tasks.add[e96d2a56-f9f3-433d-9900-19890927d644] succeeded in 0.002601843999400444s: 8
[2025-06-29 22:32:25,142: INFO/MainProcess] Task tasks.add[e77bc867-d315-433e-ade3-218fb5651a0a] received
[2025-06-29 22:32:25,143: INFO/ForkPoolWorker-16] Task tasks.add[e77bc867-d315-433e-ade3-218fb5651a0a] succeeded in 0.0005807699999422766s:
# 第二个终端
python main.py
输出:
8