Celery用于处理Web应用中的耗时异步任务,如发邮件、生成报表等,避免阻塞HTTP请求。其核心组件包括Producer(提交任务)、Broker(暂存队列)、Worker(执行任务)和Result Backend(存储结果)。
Web应用中常遇到耗时操作——比如发送邮件、生成报表、调用第三方API、处理图片上传。如果这些逻辑直接在HTTP请求中执行,用户就得干等,响应变慢,还可能超时。Celery把这类工作从主线程“摘出来”,交由独立的工作进程(worker)异步执行,主服务只负责快速返回响应,体验更流畅,系统也更健壮。
Celery不是单个程序,而是一套协作机制:
.delay()或.apply_async()提交任务
结果以“用户注册后自动发欢迎邮件”为例:
celery和redis,在项目中新建celery.py,设置Broker URL为redis://localhost:6379/0
@app.task装饰普通函数,例如send_welcome_email(user_id),内部查用户、渲染模板、调SMTP发送send_welcome_email.delay(user.id);另开终端运行celery -A your_project.celery worker --loglevel=info启动worker本地跑通不等于线上可用:
立即学习“Python免费学习笔记(深入)”;
.apply_async(timeout=30, retry=True, countdown=60)防止卡死,失败后延迟重试pip install flower)启动Web界面,实时看队列长度、任务状态、执行耗时