您的位置:

关于pythoncelery是做什么的的信息

本文目录一览:

Celery 简介

任务队列是一种把任务通过线程或机器进行分发的机制,输入是一个工作单元--任务,工作进程则不断地检查任务队列来执行新任务。

celery使用消息来通信,通常需要中间件中转。流程为:客户端添加消息到队列来初始化一个任务,然后消息队列系统把消息分发给工作进程。

celery可以包含多个工作进程和消息队列系统,来保证高可用性和进行水平扩展。

虽然celery是python实现的,仍可轻松实现其他语言的客户端,如php js,或可可使用webhooks来交互。

可在单台机器、多台机器、集群中运行

需要py2.7+ 不支持win

需要rabbitmq或redis作为消息中间件

不需要配置文件

工作进程和客户端在连接丢失或失败时会自动重试,一些支持HA的消息系统可以做主主、主从扩展

每分钟处理几百万任务,通过使用RabbitMQ librabbitmq 和 一些优化设置,可使得rtt为亚毫秒级

它的每一部分都可以灵活地扩展(自定义的pool,序列化方式,压缩,日志,定时任务,消费者,生产者,中间件)

redis rabbitmq

redis amqp memcached orm apache-Cassandra ES

fork eventlet gevent 单线程

pickle json yaml 另支持压缩 签名 加密

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

希望能帮到你!

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如下:

关于pythoncelery是做什么的的信息

2023-01-04
关于extjs能做什么的信息

本文目录一览: 1、extjs适合做电商网站么 2、谁知道用extjs做到网站? 3、Extjs的优点 4、ExtJS应用怎么样?前景怎么样? extjs适合做电商网站么 老实说不太适合,EXT多是用

2023-12-08
关系图用什么软件做

2023-05-21
关于java什么是集中式的信息

2022-11-12
关于jscsshtml分别是什么的信息

本文目录一览: 1、HTML,CSS,JS,AI,DW,FLASH、Dreamweaver、html语言这些分别是干什么用的 2、解html js css三者的概念关系 3、html,css和java

2023-12-08
关于linux什么是mysql的信息

2022-11-14
关于python中pca是什么的信息

2022-11-18
关于urijava的信息

2023-01-08
关于hashjava的信息

2022-11-29
关于python什么是io编程的信息

2022-11-20
关于java网的信息

2023-01-08
关于chjsjsbvc的信息

本文目录一览: 1、jsb文件是什么文件格式 jsb文件是什么文件格式 使用办公之星控件(),客户端无须安装office软件名称:办公之星控件(OStarOCX)软件版本:V1.02更新日期:2003

2023-12-08
关于golangdevop的信息

2022-11-27
关于pythonsshmysql的信息

2022-11-10
关于cjson.dll下载的信息

本文目录一览: 1、开机提示没有找到json.dll因此这个程序未能启动 2、jsonv6.dll 怎么修复 3、System.Net.Json.dll文件下载 4、jsonfx.json.dll应该

2023-12-08
关于mysql与c语言有什么相同点的信息

2022-11-15
关于cosercjshowgirl的信息

本文目录一览: 1、CJ为什么封杀雅典娜COSER?因为奶太大吗,而且领导验出不是真地? 2、chinajoy的showgirl孙婷 3、求CJGIRL吕瑶的具体资料 4、你知道哪些ChinaJoy上

2023-12-08
关于bos物流java需要哪些软件的信息

2022-11-21
关于javah5的信息

2022-12-02
关于什么是python中的bif的信息

2022-11-09