您的位置:

包含类似python的celery的词条

本文目录一览:

Python 异步任务队列Celery 使用

在 Python 中定义 Celery 的时候,我们要引入 Broker,中文翻译过来就是“中间人”的意思。在工头(生产者)提出任务的时候,把所有的任务放到 Broker 里面,在 Broker 的另外一头,一群码农(消费者)等着取出一个个任务准备着手做。这种模式注定了整个系统会是个开环系统,工头对于码农们把任务做的怎样是不知情的。所以我们要引入 Backend 来保存每次任务的结果。这个 Backend 也是存储任务的信息用的,只不过这里存的是那些任务的返回结果。我们可以选择只让错误执行的任务返回结果到 Backend,这样我们取回结果,便可以知道有多少任务执行失败了。

其实现架构如下图所示:

可以看到,Celery 主要包含以下几个模块:

celery可以通过pip自动安装。

broker 可选择使用RabbitMQ/redis,backend可选择使用RabbitMQ/redis/MongoDB。RabbitMQ/redis/mongoDB的安装请参考对应的官方文档。

------------------------------rabbitmq相关----------------------------------------------------------

官网安装方法:

启动管理插件:sbin/rabbitmq-plugins enable rabbitmq_management 启动rabbitmq:sbin/rabbitmq-server -detached

rabbitmq已经启动,可以打开页面来看看 地址:

用户名密码都是guest 。进入可以看到具体页面。 关于rabbitmq的配置,网上很多 自己去搜以下就ok了。

------------------------------rabbitmq相关--------------------------------------------------------

项目结构如下:

使用前,需要三个方面:celery配置,celery实例,需执行的任务函数,如下:

Celery 的配置比较多,可以在 官方配置文档: 查询每个配置项的含义。

当然,要保证上述异步任务and下述定时任务都能正常执行,就需要先启动celery worker,启动命令行如下:

需 启动beat ,执行定时任务时, Celery会通过celery beat进程来完成。Celery beat会保持运行, 一旦到了某一定时任务需要执行时, Celery beat便将其加入到queue中. 不像worker进程, Celery beat只需要一个即可。而且为了避免有重复的任务被发送出去,所以Celery beat仅能有一个。

命令行启动:

如果你想将celery worker/beat要放到后台运行,推荐可以扔给supervisor。

supervisor.conf如下:

celery python 好用吗

为什么要使用celery

Celery是一个使用Python开发的分布式任务调度模块,因此对于大量使用Python构建的系统,可以说是无缝衔接,使用起来很方便。Celery专注于实时处理任务,同时也支持任务的定时调度。因此适合实时异步任务定时任务等调度场景。Celery需要依靠RabbitMQ等作为消息代理,同时也支持Redis甚至是Mysql,Mongo等,当然,官方默认推荐的是RabbitMQ。

broker的选择

虽然官方支持的broker有很多,包括RabbitMQ,Redis甚至是数据库,但是不推荐使用数据库,因为数据库需要不断访问磁盘,当你的任务量大了之后会造成很严重的性能问题,同时你的应用很可能也在使用同一个数据库,这样可能导致你的应用被拖垮。如果业务环境比较简单可以选择Redis,如果比较复杂选择RabbitMQ,因为RabbitMQ是官方推荐的,但是比Redis操作起来又相对复杂些。我的选择是broker用RabbitMQ,backend用Redis

希望能帮到你!

golang 有什么比较好得分布式任务队列,类似Python的celery

nsq 虽然可以实现. 但是nsq的定时任务现在还无法持久化, 如果定时任务未执行期间nsq服务被重启将丢失.

包含类似python的celery的词条

2022-11-11
包含python使用笔记24的词条

2022-11-21
python之celery介绍,python celery应

2022-11-18
包含golangllvm的词条

本文目录一览: 1、golang的线程模型——GMP模型 2、Golang 语言深入理解:channel 3、golang协程调度模式解密 golang的线程模型——GMP模型 内核线程(Kernel

2023-12-08
包含golangbreak的词条

2022-11-26
包含golangscala的词条

2022-11-28
包含java基础笔记day1的词条

2022-11-20
包含golangfmt的词条

2022-11-26
包含imgolang的词条

2022-11-27
包含Golang50坑的词条

2022-11-27
包含golanggrace的词条

2022-11-27
包含pythonjsondump的词条

本文目录一览: 1、【Python】浅谈python中的json 2、Python用json模块时怎么才能用dump存数据时自动换行呢 3、python 用json.dumps处理字典后如何还原? 4

2023-12-08
包含golanglong的词条

本文目录一览: 1、如何Golang开发Android应用 2、如何在golang 中调用c的静态库或者动态库 3、golang json:怎么替代yaml: 如何Golang开发Android应用

2023-12-08
python笔记第六天,python第六周笔记

2022-11-21
包含stormgolang的词条

本文目录一览: 1、2017年,Web 后端出现了哪些新的思想和技术 2、webstorm 怎么添加 golang 求助 3、phpstorm golang开发环境如何配置 4、golang ide

2023-12-08
python笔记第九章,python第八章

2022-11-20
包含pythonjsonkafka的词条

本文目录一览: 1、大数据需要掌握哪些技能 2、Python培训哪里最好? 3、python 消费kafka 写入es 小记 4、如何在kafka-python和confluent-kafka之间做出

2023-12-08
包含golangtour的词条

2022-11-27
包含phptodays的词条

2022-11-26
python学习笔记1基础篇(Python基础笔记)

2022-11-11