celery分布式任务队列

2024-06-13 18:58
文章标签 队列 分布式 任务 celery

本文主要是介绍celery分布式任务队列,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

celery分布式任务队列

Celery是基于分布式消息传递的异步任务队列/作业队列。它专注于实时操作,但也支持调度。

执行单元(称为任务)使用多处理,Eventlet或gevent在一个或多个工作服务器上并发执行。任务可以异步(在后台)或同步执行(等到准备就绪)。

Celery用于生产系统,每天处理数百万个任务。
异步实时处理
支持扩展
支持多种消息队列
使用AMQP协议

应用场景:

  • 后台任务
  • 一步操作
  • 定期执行的工作
  • 一定程度上的分布式计算

核心关键词:

  • Task queue:任务队列,描述在多线程或主机间任务工作的一种机制

  • Task:任务,队列输入,工作单元

  • Broker:消息代理,转发任务

  • Worker:工作者,负责执行任务
    在这里插入图片描述
    首先安装RabbitMQ-server请在我的博客里查找安装的方法
    安装redis

    yum install redis
    systemctl start redis
    ps -aux|grep redis
    #如果运行中出错  请修改celery如下所示
    pip install --upgrade https://github.com/celery/celery/tarball/master
    

pip install celery

  • 发送任务
  • 定时执行任务
  • 多台机器并发工作

task—>MQ—>worker—>db
Linux操作
1.创建task

vim task.py

在这里插入图片描述
2.启动celery服务

celery worker -A task -l info

在这里插入图片描述
在这里插入图片描述
3.执行worker任务
打开ipython

from task import worker
w = worker.delay('log')
w.ready()
w.get()

在这里插入图片描述

[2019-03-05 17:19:21,274: WARNING/ForkPoolWorker-1] log工作正在进行
[2019-03-05 17:19:23,277: INFO/ForkPoolWorker-1] Task task.worker[fce96b65-68c9-4489-bfc2-f2a2d1bbc2aa] succeeded in 2.0033699511550367s: 'logOK'

下面说明执行定时任务

vim run.py

在这里插入图片描述

 vim config.py

在这里插入图片描述

vim task_log.py

在这里插入图片描述

启动

#celery worker -A task_log -l info
celery beat -A task_log -l info

分布式

在这里插入图片描述

在这里插入图片描述
run.py的内容

在这里插入图片描述

在这里插入图片描述
大家可以看出任务是交替运行的

这篇关于celery分布式任务队列的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1058153

相关文章

如何使用celery进行异步处理和定时任务(django)

《如何使用celery进行异步处理和定时任务(django)》文章介绍了Celery的基本概念、安装方法、如何使用Celery进行异步任务处理以及如何设置定时任务,通过Celery,可以在Web应用中... 目录一、celery的作用二、安装celery三、使用celery 异步执行任务四、使用celery

Golang使用etcd构建分布式锁的示例分享

《Golang使用etcd构建分布式锁的示例分享》在本教程中,我们将学习如何使用Go和etcd构建分布式锁系统,分布式锁系统对于管理对分布式系统中共享资源的并发访问至关重要,它有助于维护一致性,防止竞... 目录引言环境准备新建Go项目实现加锁和解锁功能测试分布式锁重构实现失败重试总结引言我们将使用Go作

Redis分布式锁使用及说明

《Redis分布式锁使用及说明》本文总结了Redis和Zookeeper在高可用性和高一致性场景下的应用,并详细介绍了Redis的分布式锁实现方式,包括使用Lua脚本和续期机制,最后,提到了RedLo... 目录Redis分布式锁加锁方式怎么会解错锁?举个小案例吧解锁方式续期总结Redis分布式锁如果追求

什么是cron? Linux系统下Cron定时任务使用指南

《什么是cron?Linux系统下Cron定时任务使用指南》在日常的Linux系统管理和维护中,定时执行任务是非常常见的需求,你可能需要每天执行备份任务、清理系统日志或运行特定的脚本,而不想每天... 在管理 linux 服务器的过程中,总有一些任务需要我们定期或重复执行。就比如备份任务,通常会选在服务器资

hdu1180(广搜+优先队列)

此题要求最少到达目标点T的最短时间,所以我选择了广度优先搜索,并且要用到优先队列。 另外此题注意点较多,比如说可以在某个点停留,我wa了好多两次,就是因为忽略了这一点,然后参考了大神的思想,然后经过反复修改才AC的 这是我的代码 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<

poj 3190 优先队列+贪心

题意: 有n头牛,分别给他们挤奶的时间。 然后每头牛挤奶的时候都要在一个stall里面,并且每个stall每次只能占用一头牛。 问最少需要多少个stall,并输出每头牛所在的stall。 e.g 样例: INPUT: 51 102 43 65 84 7 OUTPUT: 412324 HINT: Explanation of the s

poj 2431 poj 3253 优先队列的运用

poj 2431: 题意: 一条路起点为0, 终点为l。 卡车初始时在0点,并且有p升油,假设油箱无限大。 给n个加油站,每个加油站距离终点 l 距离为 x[i],可以加的油量为fuel[i]。 问最少加几次油可以到达终点,若不能到达,输出-1。 解析: 《挑战程序设计竞赛》: “在卡车开往终点的途中,只有在加油站才可以加油。但是,如果认为“在到达加油站i时,就获得了一

poj3750约瑟夫环,循环队列

Description 有N个小孩围成一圈,给他们从1开始依次编号,现指定从第W个开始报数,报到第S个时,该小孩出列,然后从下一个小孩开始报数,仍是报到S个出列,如此重复下去,直到所有的小孩都出列(总人数不足S个时将循环报数),求小孩出列的顺序。 Input 第一行输入小孩的人数N(N<=64) 接下来每行输入一个小孩的名字(人名不超过15个字符) 最后一行输入W,S (W < N),用

POJ2010 贪心优先队列

c头牛,需要选n头(奇数);学校总共有f的资金, 每头牛分数score和学费cost,问合法招生方案中,中间分数(即排名第(n+1)/2)最高的是多少。 n头牛按照先score后cost从小到大排序; 枚举中间score的牛,  预处理左边与右边的最小花费和。 预处理直接优先队列贪心 public class Main {public static voi

集中式版本控制与分布式版本控制——Git 学习笔记01

什么是版本控制 如果你用 Microsoft Word 写过东西,那你八成会有这样的经历: 想删除一段文字,又怕将来这段文字有用,怎么办呢?有一个办法,先把当前文件“另存为”一个文件,然后继续改,改到某个程度,再“另存为”一个文件。就这样改着、存着……最后你的 Word 文档变成了这样: 过了几天,你想找回被删除的文字,但是已经记不清保存在哪个文件了,只能挨个去找。真麻烦,眼睛都花了。看