返回顶部
首页 > 资讯 > 后端开发 > Python >44. Python Celery多实
  • 325
分享到

44. Python Celery多实

Python多实Celery 2023-01-31 03:01:22 325人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

celery是一个分布式的任务调度模块,那么celery是如何和分布式挂钩呢?celery可以支持多台不同的计算机执行不同的任务或者相同的任务。如果要说celery的分布式应用的话,就要提到celery的消息路由机制,提到AMQP协议。具体

celery是一个分布式的任务调度模块,那么celery是如何和分布式挂钩呢?

celery可以支持多台不同的计算机执行不同的任务或者相同的任务。

如果要说celery的分布式应用的话,就要提到celery的消息路由机制,提到AMQP协议。

具体可以查看AMQP文档详细了解。

简单理解:

可以有多个"消息队列"(message Queue),不同的消息可以指定发送给不同的Message Queue,

而这是通过Exchange来实现的,发送消息到"消息队列"中时,可以指定routiing_key,Exchange通过routing_key来吧消息路由(routes)到不同的"消息队列"中去。

如图:

clipboard.png

exchange 对应 一个消息队列(queue),即:通过"消息路由"的机制使exchange对应queue,每个queue对应每个worker

写个例子:

vim demon3.py

from celery import Celery
app = Celery()
app.config_from_object("celeryconfig")
@app.task
def taskA(x, y):
    return x * y
@app.task
def taskB(x, y, z):
    return x + y + z
@app.task
def add(x, y):
    return x + y

vim celeryconfig.py

from kombu import Queue
BORKER_URL = "Redis://192.168.48.131:6379/1"				#1库
CELERY_RESULT_BACKEND = "redis://192.168.48.131:6379/2"	#2库
CELERY_QUEUES = {
    Queue("default", Exchange("default"), routing_key = "default"),
    Queue("for_task_A", Exchange("for_task_A"), routing_key = "for_task_A"),
    Queue("for_task_B", Exchange("for_task_B"), routing_key = "for_task_B")
}
#路由
CELERY_ROUTES = {
    "demon3.taskA":{"queue": "for_task_A",  "routing_key": "for_task_A"},
    "demon3.taskB":{"queue": "for_task_B",  "routing_key": "for_task_B"}
}

下面把两个脚本导入服务器

指定taskA启动一个worker:

# celery -A demon3 worker -l info -n workerA.%h -Q for_task_A

同理:

# celery -A demon3 worker -l info -n workerB.%h -Q for_task_B

下面远程客户端调用:新文件

vim remote.py

from demon3 import *
r1 = taskA.delay(10, 20)
print (r1.result)
print (r1.status)
r2 = taskB.delay(10, 20, 30)
time.sleep(1)
prnit (r2.result)
print (r2.status)
#print (dir(r2))
r3 = add.delay(100, 200)
print (r3.result)
print (r3.status)	#PENDING

看到状态是PENDING,表示没有执行,这个是因为没有celeryconfig.py文件中指定改route到哪一个Queue中,所以会被发动到默认的名字celery的Queue中,但是我们还没有启动worker执行celery中的任务。

下面,我们来启动一个worker来执行celery队列中的任务

# celery -A tasks worker -l info -n worker.%h -Q celery 		##默认的

可以看到这行的结果为success

print(re3.status)    #SUCCESS


定时任务:

Celery 与 定时任务

在celery中执行定时任务非常简单,只需要设置celery对象中的CELERYBEAT_SCHEDULE属性即可。

下面我们接着在配置文件:celeryconfig.py,添加关于 CELERYBEAT_SCHEDULE 变量到脚本中去:

CELERY_TIMEZONE = 'UTC'
CELERYBEAT_SCHEDULE = {
    'taskA_schedule' : {
        'task':'tasks.taskA',
        'schedule':20,
        'args':(5,6)
    },
'taskB_scheduler' : {
    'task':"tasks.taskB",
    "schedule":200,
    "args":(10,20,30)
    },
'add_schedule': {
    "task":"tasks.add",
    "schedule":10,
    "args":(1,2)
    }
}

注意格式,否则会有问题

启动:

celery -A demon3 worker -l info -n workerA.%h -Q for_task_A

celery -A demon3 worker -l info -n workerB.%h -Q for_task_B

celery -A tasks worker -l info -n worker.%h -Q celery

celery -A demon3 beat


--结束END--

本文标题: 44. Python Celery多实

本文链接: https://lsjlt.com/news/187337.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 44. Python Celery多实
    celery是一个分布式的任务调度模块,那么celery是如何和分布式挂钩呢?celery可以支持多台不同的计算机执行不同的任务或者相同的任务。如果要说celery的分布式应用的话,就要提到celery的消息路由机制,提到AMQP协议。具体...
    99+
    2023-01-31
    Python 多实 Celery
  • python celery 模块
    Celery是基于Python开发的一个分布式任务队列框架,支持使用任务队列的方式在分布的机器/进程/线程上执行任务调度Celery是典型的生产生-消费者模式,主要由三部分组成:broker(消息队列)、workers(消费者:处理任务)、...
    99+
    2023-01-31
    模块 python celery
  • Python Celery初研究
    最近,换了一个工作环境去做研究,当然啦,新公司新作风,需要研究python并行分布式框架:Celery,不用多说,干呗。然后就抽空看了一下,果然接口简单,开发容易,5分钟就写出了一个异步发送邮件的服务。Celery本身不含消息服务,它使用第...
    99+
    2023-01-31
    Python Celery
  • Python中celery的使用
    目录 Celery简介celery的异步任务1.安装celery2.安装redis3.使用ceelryDjango中使用celery1.创建celery文件2.添加cele...
    99+
    2024-04-02
  • Python爬虫入门教程 44-100
    1. 第二款抓包工具Charles安装与使用 Charles和Fiddler一样,也是一款抓包工具,比Fiddler界面更加清晰,支持多平台 1.1 官方网址 https://www.charlesproxy.com/ 1.2 下载地址...
    99+
    2023-01-30
    爬虫 入门教程 Python
  • python—Celery异步分布式
    一、Celery异步分布式Celery  是一个python开发的异步分布式任务调度模块,是一个消息传输的中间件,可以理解为一个邮箱,每当应用程序调用celery的异步任务时,会向broker传递消息,然后celery的worker从中取消...
    99+
    2023-01-31
    分布式 python Celery
  • C++实现LeetCode(44.外卡匹配)
    [LeetCode] 44. Wildcard Matching 外卡匹配 Given an input string (s) and a pattern (p), implemen...
    99+
    2024-04-02
  • django+celery+RabbitMQ自定义多个消息队列的实现
    关于django celery的使用网上有很多文章,本文就不多做更多的说明。 本文使用版本 python==3.8.15Django==3.2.4celery==5.2.7 cele...
    99+
    2023-02-22
    django celery RabbitMQ消息队列 django celery 消息队列
  • 怎么用Python分析44万条数据
    本篇文章给大家分享的是有关怎么用Python分析44万条数据,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。有个段子讲“十年文案老司机,不如网易评论区,网易文豪遍地走,评论全部单...
    99+
    2023-06-02
  • Python Celery定时任务详细讲解
    目录前言一、Celery定时任务是什么?二、使用步骤1.代码结构2.启动定时任务3.执行结果总结前言 Celery在python中的应用除了实现异步任务(async task)外也可...
    99+
    2024-04-02
  • python中celery的基本使用详情
    目录1.基本介绍2.使用场景3.工作流程和组成部分4.Celery执行异步任务4.1 基础使用1.基本介绍 Celery 是由Python 编写的简单,灵活,可靠的用来处理大量信息的...
    99+
    2024-04-02
  • 在python下比celery更加简单的
    前言: 关于python rq有几点没有描述清楚,修正后的文章在这。http://xiaorui.cc/2014/11/09/%E5%9F%BA%E4%BA%8Eredis%E5%8F%88%E6%AF%94celery%E6%9B%B4%...
    99+
    2023-01-31
    简单 python celery
  • Python Celery动态添加定时任务生产实践指南
    目录一、背景二、Celery动态添加定时任务的官方文档三、celery简单实用3.1 基础环境配置3.2 测试使用Celery应用四、配置backend存储任务执行结果 四...
    99+
    2024-04-02
  • Python 强大的任务调度框架 Celery!
    什么是 celery这次我们来介绍一下 Python 的一个第三方模块 celery,那么 celery 是什么呢? celery 是一个灵活且可靠的,处理大量消息的分布式系统,可以在多个节点之间处理某个任务; celery 是一个专注于实...
    99+
    2023-05-14
    Python 框架 Celery
  • Django中celery的使用项目实例
    目录1、django应用Celery2 、项目应用1.异步任务redis2.定时任务3.任务绑定4.任务钩子5.任务编排6、celery管理和监控总结1、django应用Celery...
    99+
    2024-04-02
  • Django+Celery实现定时任务的示例
    目录一、前言二、配置使用定义与触发任务扩展三、Django中使用定时任务二次开发一、前言   Celery是一个基于python开发的分布式任务队列,而做python WEB开发最为...
    99+
    2024-04-02
  • celery实现动态设置定时任务
    本文实例为大家分享了celery动态设置定时任务的具体代码,供大家参考,具体内容如下 首先celery是一种异步任务队列,如果还不熟悉这个开源软件的请先看看官方文档,快速入门。 这里...
    99+
    2024-04-02
  • 怎么用Python Celery动态添加定时任务
    一、背景实际工作中会有一些耗时的异步任务需要使用定时调度,比如发送邮件,拉取数据,执行定时脚本通过celery 实现调度主要思想是 通过引入中间人redis,启动 worker 进行任务执行 ,celery-beat进行定时任务数据存储二、...
    99+
    2023-05-14
    Python Celery
  • 怎么使用django+celery+RabbitMQ自定义多个消息队列
    本篇内容主要讲解“怎么使用django+celery+RabbitMQ自定义多个消息队列”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用django+celery+RabbitMQ自定义多...
    99+
    2023-07-05
  • django-celery-beat搭建定时任务的实现
    目录一、创建django项目和app1、安装定时任务第三方包2、创建django项目并创建一个使用定时任务的app2、新建一个celery.py文件3、创建配置文件config.py...
    99+
    2023-03-21
    django 搭建定时任务 django-celery-beat 定时任务
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作