Python Celery快速入门教程

Celery 是一个简单、灵活且可靠的分布式任务队列框架,用于处理大量的异步任务、定时任务等。它允许你将任务发送到消息队列,然后由后台的工作进程(worker)来执行这些任务,并且支持多种消息中间件,如 RabbitMQ、Redis 等。

Celery简介

Celery是一个简单、灵活、可靠的分布式系统,可以处理大量的消息,同时为操作提供维护这样一个系统所需的工具。
在这里插入图片描述

Celery有很多应用场景,典型示例如下:

  • 发送电子邮件:可以将发送电子邮件的任务交给Celery,并向用户显示一个感谢页面,而不是让用户在填写完注册表格后等待。你可能会说,执行电子邮件发送代码不需要花费时间,但是如果电子邮件服务器没有响应,如果将这部分设置为同步,站点访问者将不得不等待,直到超时发生。
  • 图片/其他文件上传任务:现在通过网页上传图片或其他类型的文档是非常常见的。假设希望提供一个工具来上传包含产品图像的产品信息,同时还需要根据要求调整图像大小,并增加与品牌相关的水印,用户在所有这些操作期间等待看起来不太好。他想要的只是看到他的过程已经完成的文本,然后继续前进。你可以创建多个celery任务来实现目标。
  • 计划任务:celery也可以作为一个调度程序,执行周期性任务。

Celery主要概念

Celery基本架构如下图所示:

在这里插入图片描述

生产者:这个应用程序负责推送消息与所有需要的信息。

Broker: 这个模块实际上是作为消息队列服务的,像Redis或RabbitMQ这样的应用程序可以在这里使用。

任务:任务是序列化后在代理中排队的Python函数或任务。然后,任务函数由负责反序列化并执行它的工作程序挑选。默认的序列化格式是JSON,您可以将其更改为msgpack, YAML或pickle。

后端:该组件负责存储函数产生的结果.

环境准备

  • 安装redis

这里为了快速演示,直接适用docker容器:

docker run -d -p 6379:6379 redis
  • 安装依赖

首先安装 Celery 和 Redis(python连接redis):

pip install celery redis

基本示例

  • 创建任务

创建项目(如使用poetry工具),以下是简单Celery任务模块示例:

# tasks.py 文件
from celery import Celery

# 创建Celery实例,指定名称和消息中间件(这里是Redis)的URL
app = Celery('tasks', broker=
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值