celery中间件:broker

news/2024/7/5 5:08:04

celery中间件:broker

 

 

Celery 支持多种消息传输的方式。

 

中间人(Broker)使用指南

  • 使用 RabbitMQ

  • 使用 Redis

  • 使用 Amazon SQS

 

中间人(Broker)概况

这是不同的中间件比对情况,更多的信息可以在每个中间件的文档中找到。

名称

状态

监控

远程控制

RabbitMQ

稳定

Redis

稳定

Amazon SQS

稳定

Zookeeper

实验阶段

目前实验阶段的中间人(Broker)只是功能性的,但是没有专门的维护人员。

缺少监控就意味着这个监控已经失效,因此相关的 Flower、Celery events、celerymon 和其他基于此功能的监控工具全部失效。

远程管理控制是指可以通过 celery inspect 和 celery control(以及使用远程控制API的工具)在程序运行时检查和管理职程(Worker)的能力。

 

使用RabbitMQ

 

安装与配置

RabbitMQ 是默认的中间人(Broker),只需要配置连接的URL即可,不需要安装额外的的配置以及初始化配置信息

broker_url = 'amqp://myuser:mypassword@localhost:5672/myvhost'

有关 Celery 各种中间人(Broker)的配置列表,请查阅代理设置,并且按照说明设置用户名和密码。

 

安装 RabbitMQ服务

安装 RabbitMQ 服务可以通过 RabbitMQ官网 进行 安装RabbitMQ ,Mac OS安装请查阅 Mac OS安装RabbitMQ。

配置 RabbitMQ

要使用 Celery,需要创一个RabbitMQ账户:

sudo rabbitmqctl add_user myuser mypasswordsudo rabbitmqctl add_vhost myvhostsudo rabbitmqctl set_user_tags myuser mytagsudo rabbitmqctl set_permissions -p myvhost myuser ".*" ".*" ".*"

修改myuser、mypassword、myvhost为自己配置的配置信息。

关于更多RabbitMQ配置,请查阅 RabbitMQ手册。

Rabbit MQ安装过程:

略......

使用Redis

 

安装

如果使用 Redis 作为中间人(Broker)必须要安装 Celery 的依赖库,您可以通过 celery[redis] 进行安装:

pip install -U "celery[redis]"

 

配置

Redis 的配置非常的简单,只需要配置 Redis 的 URL :

app.conf.broker_url = 'redis://localhost:6379/0'

URL 的格式为:

redis://:password@hostname:port/db_number

URL 的所有配置都可以自定义配置的,默认使用的是 localhost 的 6379 端口中 0 数据库。( Redis 默认有 16 个数据库)

可以通过 Uninx 套接字进行连接,URl 格式如下:

redis+socket:///path/to/redis.sock

可以通过设置 virtual_host参数添加到URL上进行指定使用时 Uninx 套接字连接的数据库编号:

redis+socket:///path/to/redis.sock?virtual_host=db_number

Celery 也可以连接 Redis 哨兵也是非常简单的:

app.conf.broker_url = 'sentinel://localhost:26379;sentinel://localhost:26380;sentinel://localhost:26381'app.conf.broker_transport_options = {'master_name':'cluster1'}

可见性超时

可见性超时为将消息重新下发给另外一个程序之前等待确认的任务秒数。请注意查看下面的 注意事项。

可以通过 broker_transport_options 选项进行修改:

app.conf.broker_transport_options = {'visibility_timeout': 3600} # 一个小时

默认的可见性超时时间为1个小时。

 

结果

如果您想保存任务执行返回结果保存到Redis,您需要进行以下配置:

app.conf.result_backend = 'redis://localhost:7379/0'

有关 Redis 保存结果的完整选项列表,请查阅 Redis后端配置。

如果您使用的是 Redis 哨兵默认是,则需要使用 result_backend_transport_options 进行指定 master_name:

app.conf.result_backend_transport_options = {'master_name': "mymaster"}

 

注意事项

 

广播前缀

默认情况下,所有的虚拟机都可以看到广播的消息。

您必须为消息进行设置前缀,以便它们由仅活动的虚拟机接收:

app.conf.broker_transport_options = {'fanout_prefix': true}

注意:该选项仅是向后兼容的,老版本不支持。集群中所有的职程都必须要开启设置,否则无法进行通信。

该设置在将来以后的版本是默认配置,所以请尽早进行迁移。

广播模式

默认情况下, 职程(Worker)收到所有与任务相关的事件。

为了避免该情况发生,需要进行配置 fanout_patterns 广播模式,以便职程(Worker)只能订阅相关的事件:

app.conf.broker_transport_options = {'fanout_patterns': true}

该设置在将来以后的版本是默认配置。

可见性超时

如果在“可见性超时“内没有完成任务,该任务会重新分配给另外一个职程(Worker)进行执行。

这可能会出现在预计时间超出可见性超时时间的问题,如果出现该问题,任务将重新循环执行。

因此您必须要增加可见性超时时间用于用于匹配最长的执行时间。

注意:Celery会在职程(Worker)关闭的重新分配消息,如果可见性超时时间过长在断电或者强制终止职程(Worker)的情况会“丢失“重新分配的任务。

定期执行任务不会被可见性超时影响,因为这是俩个不同的概念。

您可以通过配置同名的配置选项来扩增可见性超时时间:

app.conf.broker_transport_options = {'visibility_timeout': 432000}

对应的值必须为 int 类型。

驱逐Key

在某些情况下,Redis会根据(驱逐策略)进行驱逐一些key

可能会出现已经错误问题:

InconsistencyError: Probably the key ('_kombu.binding.celery') has beenremoved from the Redis database.

您可以在Redis服务器的 time_out 参数设置为0进行避免key被驱逐。

 

使用Amazon SQS

略......

 

 

 

 

 

 

 

 

 

 

 


http://lihuaxi.xjx100.cn/news/269499.html

相关文章

超越YOLOv5,1.3M超轻量,高效易用,这个目标检测开源项目太香了!

这个目标检测神器简直香炸了!它不仅连续登录Github全球趋势榜,拥有的全球尖端算法论文也接连登录全球技术趋势榜PaperWithCode。这个神器就是刚刚全面升级的PaddleDetection2.0!它全面兼顾高性能算法、便捷开发、高效训练及完备部署&#xff…

某游戏在华为鸿蒙,部分安卓游戏在华为鸿蒙 OS 上运行,被识别成使用 PC 端模拟器...

5 月 14 日消息 华为在 2019 年开发者大会上正式推出了鸿蒙 OS 系统,并首先应用在智慧屏等产品上,并于 2020 年开发者大会上宣布为智能手机升级支持鸿蒙 HarmonyOS 2.0。华为消费者业务软件部总裁、AI 与智慧全场景业务部部长王成录曾表示,华…

成为计算机视觉工程师的第一个月,我都学会了什么?

点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达作者 | Richmond Alake译者 | 弯月我写这篇文章的目的是为了向那些没有接触过机器学习行业的人们介绍一下我作为计算机视觉工程师第一个月以来的体验,希望这些…

php学习之道:WSDL具体解释(三)

通过声明方式定义绑定(binding)属性 假设你在服务中採用SOAP binding。你能够使用JAX-WS来指定一定数量的属性binding。这些属性指定相应你在WSDL中指定的属性。某些设置。比方參数类型,能够约束你实现的方法。这些设置也影响声明的效用。 SO…

FastSpeech语音合成系统技术升级,微软联合浙大提出FastSpeech2

来源 | 微软研究院AI头条(ID: MSRAsia)编者按:基于深度学习的端到端语音合成技术进展显著,但经典自回归模型存在生成速度慢、稳定性和可控性差的问题。去年,微软亚洲研究院和微软 Azure 语音团队联合浙江大学提出了快速…

控制客户端对同一个服务端地址的连接端口数量

转载于:https://juejin.im/post/5c18c2fef265da613e222d70

celery的初次使用

celery的初次使用 基本步骤: 选择并且安装一个消息中间件(Broker) 安装 Celery 并且创建第一个任务 运行职程(Worker)以及调用任务 跟踪任务的情况以及返回值 应用 创建第一个 Celery 实例程序,把创建…

android adb root方法

2019独角兽企业重金招聘Python工程师标准>>> 在有些android手机上使用adb root希望获取root权限时出现如下提示信息:adbd cannot run as root in production builds。此时提升root权限的方法是: 1。在android手机上获取超级用户权限&#xff…