python 中celery的使用

94 阅读2分钟

1 介绍

image.png

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