celery模块
Celery
Celery是管理分布式任务队列的工具,其本身并不是任务队列。
Celery常见概念有brokers、backend、workers、tasks。
brokers:中间人,是Celery存放/拿取产品的地方,即任务队列,常见有rabbitmq/redis/zookeeper。
backend:又称result stores,存储运行结果,常见有redis/memcached。
workers:Celery的工作者,从队列中取出任务并执行,将结果发送到backend。
tasks:任务。
简例
# tasks.py
from celery import Celery
app = Celery('tasks',
backend='redis://[host]:6379/0',
broker='amqp://[user]:[password]@[host]:5672')
@app.task
def add(x, y):
return x + y
# 命令行启动worker,此时broker中还没有任务
celery -A tasks worker --loglevel=info
# 向broker发送任务并获取结果
from tasks import add
result = add.delay(2, 3)
while not result.ready():
time.sleep(1)
print(result.get())
>>>: 5
例子中,app就是celery对象,它定义了对象的名称(用于命令行启动),存储者,任务队列。
add方法用app.task包装后,表明此函数为任务执行者。
执行add.delay()方法,参数传入到执行者,并会返回结果,当result.ready()为真时,表明结果已返回至存储者,可通过result.get()获取该结果。
与pika的区别
pika是用来连接rabbitmq的python模块,rabbitmq本身只有存储功能,而没有任务分发调度功能,celery就是用来做任务分配的,当然也可以为pika写一个调度代码,不过有现成的celery,只要用就行了。
celery模块的更多相关文章
- Python3安装Celery模块后执行Celery命令报错
1 Python3安装Celery模块后执行Celery命令报错 pip3 install celery # 安装正常,但是执行celery 命令的时候提示没有_ssl模块什么的 手动在Python解 ...
- celery简单应用
写作背景介绍 在celery简单入门中已经介绍了写作的背景,这篇文章主要是深入介绍celery的使用技巧.在实际的项目中我们需要明确前后台的分界线,因此我们的celery编写的时候就应该是分成前后台两 ...
- celery简单入门
写作背景介绍 最近在做后台图像处理,需要使用到celery这个异步任务框架.但是使用的时候遇到很多技术问题,为了方便日后再遇到相似问题时能够快速解决.写下这篇文章也希望能够帮助共同奋战在同一战线的程序 ...
- celery rabbit mq 详解
Celery介绍和基本使用 Celery 是一个 基于python开发的分布式异步消息任务队列,通过它可以轻松的实现任务的异步处理, 如果你的业务场景中需要用到异步任务,就可以考虑使用celery, ...
- Celery 分布式任务队列快速入门
Celery 分布式任务队列快速入门 本节内容 Celery介绍和基本使用 在项目中如何使用celery 启用多个workers Celery 定时任务 与django结合 通过django配置cel ...
- Celery结合Django使用
一.Celery介绍 Celery 是一个 基于python开发的分布式异步消息任务队列,通过它可以轻松的实现任务的异步处理, 如果你的业务场景中需要用到异步任务,就可以考虑使用celery, 举几个 ...
- Celery 1
Celery是一个用Python开发的异步的分布式任务调度模块 Celery有以下优点: 简单:一但熟悉了celery的工作流程后,配置和使用还是比较简单的 高可用:当任务执行失败或执行过程中发生连接 ...
- 10: Celery
目录: 1.1 Celery介绍 1.2 celery简单使用 1.3 在项目中如何使用celery 1.4 celery与Django项目最佳实践 1.5 基于步骤1.4:在django中使用计划任 ...
- Celery -- 分布式任务队列 及实例
Celery 使用场景及实例 Celery介绍和基本使用 在项目中如何使用celery 启用多个workers Celery 定时任务 与django结合 通过django配置celery perio ...
随机推荐
- java中文乱码问题解决
1 处理乱码方式: 1 连接数据库的时候 jdbc.properties:jdbc:mysql://localhost:3306/myproject?useUnicode=true&chara ...
- 【CF713C】Sonya and Problem Wihtout a Legend(离散化,DP)
题意:给你一个数列,对于每个数字你都可以++或者−− 然后花费就是你修改后和原数字的差值,然后问你修改成一个严格递增的,最小花费 思路:很久以前做过一道一模一样的 严格递增很难处理,就转化为非严格递增 ...
- CSS3 动画卡顿性能优化解决方案--摘抄
最近在开发小程序,与vue类似,它们都有生命周期这回事. onLoad 监听页面加载 onReady 监听页面初次渲染完成 onShow 监听页面显示 到底是什么意思? 所以这又触碰到了我的知识盲区, ...
- 算法 & 数据结构——任意多边形填充
需求 . 在计算机中,选区是一个很常见的功能,例如windows按住鼠标左键拖动划出矩形选区,Photshop通过钢笔工具任意形状选区.选区本身不过是通过线段闭合的一个几何形状,但是如何填充这个选区, ...
- js-页面进入时同时实现-图片预加载
下面的是我认为最简单的预加载图片里!在页面进入时就开始加载 var imgARR = ['images/xmImg1.png','images/xmImg2.png','images/xmImg3.p ...
- HOJ - 2543最小费用流
题目链接:http://acm.hit.edu.cn/hoj/problem/view?id=2543 这个题目挺有意思. 自己扣了一会儿,发现图挺好建,就把(u,v,f,w) 拆成(u,v,f,0) ...
- Codeforces 558E A Simple Task(权值线段树)
题目链接 A Simple Task 题意 给出一个小写字母序列和若干操作.每个操作为对给定区间进行升序排序或降序排序. 考虑权值线段树. 建立26棵权值线段树.每次操作的时候先把26棵线段树上的 ...
- MySQL 几种调式分析利器
目录 pstack gdb strace perf pstack 获取堆栈信息 问题线程的定位 负载较低 mysql_pid=4522 pstack $mysql_pid>pstack.info ...
- codeforces A. Wrong Subtraction
A. Wrong Subtraction time limit per test 1 second memory limit per test 256 megabytes input standard ...
- jdk1.8中nashorn不支持ECMAScript6的问题
背景 在项目中需要使用java调用javascript脚本,有两种方案,一种是faas,使用开源的openwhisk.另一种本地运行的方式,使用jdk的nashorn调用javascript,jdk版 ...