我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Redis中如何配置Celery

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Redis中如何配置Celery

今天就跟大家聊聊有关Redis中如何配置Celery,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

以下撇开Web框架,介绍基于Redis配置Celery任务的方法。

pip install celery[redis]

项目结构

$ tree your_project  your_project  ├── __init__.py  ├── main.py  ├── celery.py  └── tasks.py  0 directories, 4 files

其中,main.py是触发Task的业务代码。当然,文件名可以随意改。celery.py是Celery的app定义的位置,tasks.py是Task定义的位置,文件名不建议修改。

配置Celery

在celery.py中写入如下代码:

from celery import Celery  from .settings import REDIS_URL  APP = Celery(      main=__package__,      broker=REDIS_URL,      backend=REDIS_URL,      include=[f'{__package__}.tasks'],  )  APP.conf.update(task_track_started=True)

其中,REDIS_URL从同一的配置settings.py中引入, 形式大概是redis://localhost:6379/0。这里既用Redis来当broker,又用来当backend。即,既当消息队列,又当结果反馈的数据库(默认仅保存1天)。

在include=,需要填一个下游worker的包名列表。这里选择了同一个包的tasks.py文件。

额外设置的task_track_started,是命令Worker反馈STARTED状态。默认情况下,是无法知道任务什么时候开始执行的。

编写任务并调用

在tasks.py文件中,添加异步任务的实现。

from .celery import APP  @APP.task  def do_sth():      pass

在需要发起任务的地方,用.apply_async可以触发异步调用。即,实际只是向消息队列发送消息,真正的执行操作在远程。

from celery.result import AsyncResult  from .tasks imprt do_sth  result = do_sth.apply_async()  assert isinstance(result, AsyncResult)

运行Worker:

celery -A your_project worker

运行原理

一次Task从触发到完成,序列图如下:

Redis中如何配置Celery

其中,main代表业务代码主进程。它可能是Django、Flask这类Web服务,也可能是一个其它类型的进程。worker就是指Celery的Worker。

main发送消息后,会得到一个AsyncResult,其中包含task_id。仅通过task_id,也可以自己构造一个AsyncResult,查询相关信息。其中,代表运行过程的,主要是state。

worker会持续保持对Redis(或其它消息队列,如RabbitMQ)的关注,查询新的消息。如果获得新消息,将其消费后,开始运行do_sth。运行完成会把返回值对应的结果,以及一些运行信息,回写到Redis(或其它backend,如Django数据库等)上。在系统的任何地方,通过对应的AsyncResult(task_id)就可以查询到结果。

Celery Task的状态

以下是状态图:

Redis中如何配置Celery

其中,除SUCCESS外,还有失败(FAILURE)、取消(REVOKED)两个结束状态。而RETRY则是在设置了重试机制后,进入的临时等待状态。

另外,如果保存在Redis的结果信息被清理(默认仅保存1天),那么任务状态又会变成PENDING。这在设计上是个巨大的问题,使用时要做对应容错。

常见控制操作

result = AsyncResult(task_id)  # 阻塞等待返回  result.wait()  # 取消任务  result.revoke()  # 删除任务记录  result.forget()

有时,在业务主进程中需要等待异步运行的结果,这时需要使用wait。如果要取消一个排队中、或已执行的任务,则可以使用revoke。即使任务已经执行完成,也可以使用revoke,但不会有任何变化。如果需要提前删除任务记录,可以使用forget。

看完上述内容,你们对Redis中如何配置Celery有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Redis中如何配置Celery

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

redis如何配置rdb

要配置 Redis 的 RDB(Redis Database)持久化方式,可以按照以下步骤进行:1. 打开 Redis 的配置文件 redis.conf。2. 找到以下配置项并进行相应修改:```save ```这个配置项用于设置触发 R
2023-08-30

redis项目中如何配置文件

在Redis项目中,可以通过修改redis.conf配置文件来进行配置。1. 打开redis.conf文件,该文件是Redis的主配置文件,默认位置是在Redis安装目录下。2. 在文件中可以找到各种不同的配置选项,根据需求修改对应的值。以
2023-09-01

Linux中如何配置单实例redis

这篇文章将为大家详细讲解有关Linux中如何配置单实例redis,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。redis 的介绍Redis是一种高级key-value数据库。它跟memcached类似,不
2023-06-27

java中redis如何配置文件路径

本指南介绍了在Java中配置Redis文件路径的两种方法:使用配置文件或SpringBoot。详细介绍了配置Redis服务器路径、端口、高级连接池选项等内容。还提供了使用SpringBoot和配置文件配置Redis连接的示例代码,可供参考。
java中redis如何配置文件路径
2024-04-02

如何安装与配置redis

这篇文章给大家分享的是有关如何安装与配置redis的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。简单来说 redis 就是一个数据库,不过与传统数据库不同的是 redis 的数据是存在内存中的,所以读写速度非常快
2023-06-27

详解如何在YAML文件中配置Redis

目录配置Redis在YAML文件中什么是Redis?在YAML文件中配置Redis在代码中读取Redis配置总结配置Redis在YAML文件中在现代软件开发中,配置文件是非常重要的一部分。其中,YAML(YAML Aint Markup
详解如何在YAML文件中配置Redis
2024-09-18

redis热点数据如何配置

要配置Redis热点数据,可以采取以下几种策略:1. 提高内存容量:增加Redis服务器的内存容量,以容纳更多的热点数据。可以通过修改Redis配置文件中的`maxmemory`参数来设置最大内存限制。2. 使用LRU(Least Rece
2023-09-01

redis主从模式如何配置

要配置Redis主从模式,首先需要在主节点和从节点上分别修改redis.conf配置文件。主节点配置:打开主节点的redis.conf文件。将 `# bind 127.0.0.1` 注释掉,使其可以接受来自其他节点的连接。将 `# p
2023-10-26

redis内存大小如何配置

Redis的内存大小可以通过配置文件redis.conf中的maxmemory参数来进行配置。maxmemory参数的默认值为0,表示Redis可以使用的最大内存为无限大。如果要限制Redis使用的最大内存大小,可以将maxmemory参数
2023-08-23

redis用户密码如何配置

要配置Redis的用户密码,你需要编辑Redis的配置文件redis.conf。以下是配置Redis用户密码的步骤:1. 打开redis.conf文件。通常情况下,该文件位于Redis的安装目录下。2. 在文件中搜索到`# requirep
2023-08-31

Ubuntu如何配置php、nginx和redis

这篇文章主要介绍“Ubuntu如何配置php、nginx和redis”,在日常操作中,相信很多人在Ubuntu如何配置php、nginx和redis问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Ubuntu如
2023-07-04

docker的redis如何配置查看

要配置和查看Docker中的Redis,您可以使用以下步骤:1. 在Docker中运行Redis容器:```docker run -d --name redis-container redis```2. 进入Redis容器:```docke
2023-09-16

编程热搜

目录