celery异步任务体系笔记
http://docs.celeryproject.org/en/latest/index.html
启动 sender
启动worker
broker(任务存储)和backend(结果存储)都是用的是rmq,backend中的数据会有自动过期机制,1小时后结果将自动过期(可以任意修改)。
1.发送任务
所有的复杂逻辑都在发送端进行处理,将需要执行的任务序列确定好后,放入rmq中,不考虑在rmq上有什么复杂操作。 暂时只用一个docker,将所有的异步任务都放到rmq中。
2.执行任务
执行任务只是简单的运行具体的函数比如发送邮件之类,从rmq 中获取到该worker相对应的任务直接执行,逻辑较为简单。可以根据任务的数量动态的增减docker的数目。一类任务是一个task.py文件,相当于任务之间相互隔离,每个worker只执行特定的一种任务。
3.获取任务结果
提交任务后会返回任务的唯一id,需要主动去根据任务id获取执行结果。要把任务id和一些必要信息存在mysql中。检查逻辑应该跟具体任务来设计,会关联到不同的事件。
1.celery的配置
1.1beat端
启动命令
celery定时任务 配置
2.worker端
2.1 timed端
将需要执行的任务指定在配置中,启动beat 即可,timed 会捕获到该任务进行执行,由于会有并发冲突,可能会读取到同一个edm,所以单独拆分出来,该worker只拥有一个,保证不会出现线程不安全问题。
2.2 send端
不存在并发线程不安全问题,直接启动多个处理端发送即可。
celery异步任务体系笔记的更多相关文章
- Django商城项目笔记No.6用户部分-注册接口-短信验证码实现celery异步
Django商城项目笔记No.4用户部分-注册接口-短信验证码实现celery异步 接上一篇,如何解决前后端请求跨域问题? 首先想一下,为什么图片验证码请求的也是后端的api.meiduo.site: ...
- Django使用Celery异步任务队列
1 Celery简介 Celery是异步任务队列,可以独立于主进程运行,在主进程退出后,也不影响队列中的任务执行. 任务执行异常退出,重新启动后,会继续执行队列中的其他任务,同时可以缓存停止期间接收 ...
- Celery 异步任务 , 定时任务 , 周期任务 的芹菜
1.什么是Celery?Celery 是芹菜Celery 是基于Python实现的模块, 用于执行异步定时周期任务的其结构的组成是由 1.用户任务 app 2.管道 broker 用于存储 ...
- Django --- celery异步任务与RabbitMQ模块
一 RabbitMQ 和 celery 1 celery Celery 是一个 基于python开发的分布式异步消息任务队列,通过它可以轻松的实现任务的异步处理, 如果你的业务场景中需要用到异步任务, ...
- python—Celery异步分布式
python—Celery异步分布式 Celery 是一个python开发的异步分布式任务调度模块,是一个消息传输的中间件,可以理解为一个邮箱,每当应用程序调用celery的异步任务时,会向brok ...
- Celery异步任务重复执行(Redis as broker)
之前讲到利用celery异步处理一些耗时或者耗资源的任务,但是近来分析数据的时候发现一个奇怪的现象,即是某些数据重复了,自然想到是异步任务重复执行了. 查阅之后发现,到如果一个任务太耗时,任务完成时间 ...
- Django之使用celery异步完成发送验证码
使用celery的目的:将项目中耗时的操作放入一个新的进程实现 1.安装celery pip install celery 2.在项目的文件夹下创建包celery_tasks用于保存celery异步任 ...
- celery异步任务、定时任务
阅读目录 一 什么是Celery? 二 Celery的使用场景 三 Celery的安装配置 四 Celery异步任务 五Celery定时任务 六在Django中使用Celery 一 什么是Cele ...
- celery异步发送邮件
利用Django框架发送邮件的详细过程,在前两天的博客中有所记录,但是单纯的那样发邮件是有非常大的问题的,这就需要celery异步发送来解决 首先我们来看一下邮件发送的过程: Django网站先发送到 ...
随机推荐
- 1.7.3- HTML表格属性
- reset 去掉margin和padding的 默认代码,其余根据自己的情况做调整
body, dl, dd, h2, h3, h4, h5, h6, p, form{margin:0;} ol,li,ul{margin:0; padding:0;} h1{margin:10px 0 ...
- 【JVM】空间分配担保机制
抛几个问题: 1.谁进行空间担保? JVM使用分代收集算法,将堆内存划分为年轻代和老年代,两块内存分别采用不同的垃圾回收算法,空间担保指的是老年代进行空间分配担保 2.什么是空间分配担保? 在发生Mi ...
- hdu1815 2sat + 二分 + 建图
题意: 给你两个总部,s1 ,s2,和n个点,任意两点之间都是通过这个总部相连的,其中有一些点不能连在同一个总部上,有一些点可以连接在同一个总部上,总部和总部之间可以直接连接,就是假如a, ...
- 神经网络与机器学习 笔记—单神经元解决XOR问题
单神经元解决XOR问题 有两个输入的单个神经元的使用得到的决策边界是输入空间的一条直线.在这条直线的一边的所有的点,神经元输出1:而在这条直线的另一边的点,神经元输出0.在输入空间中,这条直线的位置和 ...
- wordpress如何隐藏后台位置?
2017-02-08 20:43:20 言曌 阅读数 3585更多 分类专栏: WordPress 转载 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本 ...
- SQL注入平台(sqli-labs)搭建提示Fatal error: Uncaught Error:
笔者搭建该平台时用的是phpstudy,估计wampserver和xmapp也适用 搭建过程中出现错误 在浏览器进入sqli-labs时有以下提示 Fatal error: Uncaught Erro ...
- JVM虚拟机-了解Java堆中对象分配、布局和访问的全过程
目录 前言 对象的创建 类加载检查 分配内存 内存空间分配方式 指针碰撞 空闲列表 并发时的内存分配 同步处理:CAS 本地线程分配缓冲:TLAB 初始化零值 设置对象头 执行 init 方法 对象的 ...
- Redis 的持久化
原文链接:https://www.changxuan.top/?p=1386 Redis 是一个非关系型的内存数据库,使用内存存储数据是它能够进行快速存取数据的原因之一. 在实际应用中,常有人提倡把 ...
- layui select 动态赋值
出现问题 赋值完成后页面不显示,没有效果 发现问题 赋值完成后需要重新渲染select 解决问题 form.render('select');