在现代Web开发和数据处理场景中,我们经常需要执行耗时较长的任务,比如发送邮件、处理图片、批量导入数据等。如果这些操作同步执行,会严重拖慢用户请求的响应速度。这时,Celery分布式任务队列就派上用场了!
本文将手把手教你如何使用Python异步任务处理工具 Celery,即使你是编程小白,也能轻松上手!

Celery 是一个基于分布式消息传递的异步任务队列/作业队列,专注于实时处理,同时也支持任务调度。它使用 消息队列(如 Redis 或 RabbitMQ)作为中间人(Broker),来协调生产者(你的应用)和消费者(工作进程)之间的通信。
首先,确保你已安装 Python(建议 3.7+)。然后安装 Celery 和 Redis(作为消息代理):
# 安装 Celerypip install celery# 安装 Redis(作为 Broker)pip install redis# 如果你使用 RabbitMQ,则安装:# pip install kombu同时,请确保本地或远程已运行 Redis 服务。你可以通过以下命令启动本地 Redis(需先安装 Redis):
redis-server新建一个文件 tasks.py,写入以下代码:
from celery import Celery# 创建 Celery 实例,指定 broker 为 Redisapp = Celery('my_tasks', broker='redis://localhost:6379/0')@app.taskdef add(x, y): return x + y@app.taskdef send_email(to, subject): print(f"Sending email to {to} with subject: {subject}") # 模拟耗时操作 import time time.sleep(3) return f"Email sent to {to}!"打开终端,进入项目目录,运行以下命令启动工作进程(Worker):
celery -A tasks worker --loglevel=info你会看到类似如下输出,表示 Worker 已成功启动并监听任务:
[INFO/MainProcess] Connected to redis://localhost:6379/0[INFO/MainProcess] mingle: searching for neighbors[INFO/MainProcess] mingle: all alone[INFO/MainProcess] celery@your-computer ready.再开一个终端窗口,进入 Python 交互环境,测试任务调用:
from tasks import add, send_email# 异步调用加法任务result = add.delay(4, 6)print(result.get()) # 输出: 10# 异步发送邮件(不阻塞)email_result = send_email.delay("user@example.com", "Welcome!")print("任务已提交,正在后台处理...")# 稍后获取结果print(email_result.get()) # 3秒后输出: Email sent to user@example.com!在 Web 应用中,我们通常将 Celery 与 Flask 或 Django 结合使用。以下是一个简单的 Flask 示例:
# app.pyfrom flask import Flask, jsonifyfrom tasks import send_email # 假设 tasks.py 已定义app = Flask(__name__)@app.route('/send-mail')def trigger_email(): # 提交异步任务 task = send_email.delay("customer@example.com", "Your Order is Confirmed") return jsonify({"task_id": task.id, "status": "Task submitted"})if __name__ == '__main__': app.run(debug=True)这样,当用户访问 /send-mail 路由时,邮件发送任务会被立即提交到队列,而不会阻塞 HTTP 响应。
@app.task(bind=True, autoretry_for=(Exception,)) 自动重试失败任务。通过本篇 Celery入门教程,你应该已经掌握了如何使用 Celery 构建异步任务系统。无论是处理用户上传、发送通知,还是执行后台计算,Celery 都能让你的 Python 应用更加高效、响应更快。
赶快动手试试吧!如果你觉得这篇文章对你有帮助,欢迎分享给更多正在学习 Python异步任务处理 的朋友!
本文由主机测评网于2025-12-21发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/20251210991.html