iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python Celery初研究
  • 746
分享到

Python Celery初研究

PythonCelery 2023-01-31 02:01:35 746人浏览 独家记忆

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

摘要

最近,换了一个工作环境去做研究,当然啦,新公司新作风,需要研究python并行分布式框架:Celery,不用多说,干呗。然后就抽空看了一下,果然接口简单,开发容易,5分钟就写出了一个异步发送邮件的服务。Celery本身不含消息服务,它使用第

最近,换了一个工作环境去做研究,当然啦,新公司新作风,需要研究python并行分布式框架:Celery,不用多说,干呗。


然后就抽空看了一下,果然接口简单,开发容易,5分钟就写出了一个异步发送邮件的服务。

Celery本身不含消息服务,它使用第三方消息服务来传递任务,目前,Celery支持的消息服务有RabbitMQRedis甚至是数据库,当然Redis应该是最佳选择。


  • 任务执行单元

    Worker是Celery提供的任务执行的单元,worker并发的运行在分布式的系统节点中。

  • 任务结果存储

    Task result store用来存储Worker执行的任务的结果,Celery支持以不同方式存储任务的结果,包括AMQP, Redis,memcached, mongoDBsqlAlchemy, Django ORM,Apache Cassandra, IronCache

另外, Celery还支持不同的并发和序列化的手段

  • 并发

    Prefork, Eventlet, gevent, threads/single threaded

  • 序列化

    pickle, JSON, yaml, msgpack. zlib, bzip2 compression, Cryptographic message signing 等等




不废话,上初步研究的代码:

import sys
reload(sys)

import time

from celery import Celery

app = Celery('tasks', broker = 'redis://localhost:6379/0')

@app.task()
def sendmail(mail):
    print('sending mail to %s...' % mail['to'])
    time.sleep(2.0)
    print('mail sent.')

我是直接连的redis。


然后启动Celery处理任务:

celery -A tasks worker --loglevel=info


上面的命令行实际上启动的是Worker,如果要放到后台运行,可以扔给supervisor。

如何发送任务?非常简单:

wKioL1jhUDPj95uTAAR1BuJDw7E298.png-wh_50


可以看到,Celery的api设计真的非常简单。

然后,在Worker里就可以看到任务处理的消息:

wKiom1jhUH2AT-NgAAS4nmOeEXs818.png-wh_50

这里我们可以发现,每一个task有一个唯一的ID,task异步执行在worker上。


Celery默认设置就能满足基本要求。Worker以Pool模式启动,默认大小为CPU核心数量,缺省序列化机制是pickle,但可以指定为json。由于Python调用UNIX/linux程序实在太容易,所以,用Celery作为异步任务框架非常合适。

Celery还有一些高级用法,比如把多个任务组合成一个原子任务等,还有一个完善的监控接口,以后有空再继续研究。





--结束END--

本文标题: Python Celery初研究

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

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python Celery初研究
    最近,换了一个工作环境去做研究,当然啦,新公司新作风,需要研究python并行分布式框架:Celery,不用多说,干呗。然后就抽空看了一下,果然接口简单,开发容易,5分钟就写出了一个异步发送邮件的服务。Celery本身不含消息服务,它使用第...
    99+
    2023-01-31
    Python Celery
  • WebLogic的初步研究(2)--结构篇
    要学习好一套系统首先要了解它的结构,本文详细的介绍 WebLogic 的一些结构和特点:WebLogic的大部分配置是在 weblogic.properties 里完成的,只要仔细的研究这个文件就可以清楚得知关于 WebLogic 的一些结...
    99+
    2023-06-03
  • Web安全研究(二)
    TChecker: Precise Static Inter-Procedural Analysis for Detecting Taint-Style Vulnerabilities in PHP...
    99+
    2023-09-21
    php 安全 web安全
  • 研究Python多继承的实现方法
    探索Python中的多继承实现方式 多继承是指一个类可以从多个父类继承属性和方法。在Python中,多继承是一种强大而灵活的特性,可以实现代码的复用和扩展。本文将探索Python中多继承的实现方式,并提供具体的代码示例。 使用类...
    99+
    2024-02-03
  • Golang与GC的对比研究
    Golang与GC的对比研究 随着互联网技术的不断发展,越来越多的编程语言涌现出来,其中Golang(也称为Go语言)作为一种较新的编程语言,备受程序员关注。Golang是由Googl...
    99+
    2024-02-29
    golang 对比 gc go语言 垃圾回收器
  • 怎么使用Python进行数据科学研究
    本篇内容主要讲解“怎么使用Python进行数据科学研究”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用Python进行数据科学研究”吧!1. 为何选择PythonPython作为一种语言,...
    99+
    2023-06-16
  • 某源码thread,socket研究3
    /// /// @file Worker.h /// @brief 用户接口类 /// @author guozhiming /// @date 2007-05-16 /// #ifndef __WORKER__ #define __WOR...
    99+
    2023-01-31
    源码 thread socket
  • 44. Python Celery多实
    celery是一个分布式的任务调度模块,那么celery是如何和分布式挂钩呢?celery可以支持多台不同的计算机执行不同的任务或者相同的任务。如果要说celery的分布式应用的话,就要提到celery的消息路由机制,提到AMQP协议。具体...
    99+
    2023-01-31
    Python 多实 Celery
  • 深入研究Python函数可变参数的机制
    深入探讨Python函数的可变参数机制 引言:Python是一种功能强大且易于使用的编程语言,它提供了很多便利功能来提高开发效率,其中之一就是可变参数机制。在Python中,函数可以接受不同数量的参数,这种灵活性为程序员提供了更...
    99+
    2024-02-03
    可变参数 python函数 深入探讨
  • python celery 模块
    Celery是基于Python开发的一个分布式任务队列框架,支持使用任务队列的方式在分布的机器/进程/线程上执行任务调度Celery是典型的生产生-消费者模式,主要由三部分组成:broker(消息队列)、workers(消费者:处理任务)、...
    99+
    2023-01-31
    模块 python celery
  • 实例3、研究 ICMP 数据包
    拓扑图如下:   文件: pka.rar ...
    99+
    2023-01-31
    数据包 实例 ICMP
  • Python Django 项目案例研究:从概念到发布
    项目目标是创建一个功能齐全的电子商务平台,允许用户浏览、搜索和购买产品。平台应具有用户注册、购物车管理和安全支付处理功能。 技术栈 Python 3 Django Framework MySQL 数据库 HTML/CSS 模板 Stri...
    99+
    2024-04-02
  • 如何进行关键词研究
    进行关键词研究主要涉及以下几个方面:1、确定目标和目标受众、2、使用关键词研究工具、3、分析竞争对手、4、考虑长尾关键词、5、关键词难度和搜索量分析、6、优化和持续调整。明确研究目标和目标受众是关键词研究的第一步。使用关键词研究工具可以帮助...
    99+
    2023-10-29
    关键词
  • C++虚函数表深入研究
    目录探索虚函数表结构继承基类重写虚函数多基类继承 虚函数表寻找被覆盖的虚函数总结面向对象的编程语言有3大特性:封装、继承和多态。C++是面向对象的语言(与C语言主要区别),所以C++...
    99+
    2024-04-02
  • Java ActiveMQ 的 20 个案例研究
    Java ActiveMQ 消息代理 Messaging 系统 集成解决方案 案例研究 1:沃尔玛金融 沃尔玛金融使用 ActiveMQ 整合其分布式系统,包括零售支付、反欺诈和风险管理平台。ActiveMQ 提供了可靠且可扩展的 m...
    99+
    2024-02-19
    Java ActiveMQ 是一个强大的消息代理系统 被广泛应用于各种企业级应用程序。本文展示了 20 个真实案例研究 展示了 ActiveMQ 如何成功解决不同行业的通信挑战。
  • 研究Golang的锁实现方式
    Golang锁的实现机制探究引言:在并发编程中,锁(Lock)是一种常用的同步机制,用于保护共享资源的访问。Golang作为一门具备高并发性能和简洁语法的编程语言,提供了丰富的锁机制,包括互斥锁(Mutex)、读写锁(RWMutex)等。本...
    99+
    2023-12-28
    探究 实现机制 Golang锁
  • Oracle arraysize的研究是怎样的
    Oracle arraysize的研究是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。 SYS@proc&g...
    99+
    2024-04-02
  • 利用在Python中数值模拟研究气体扩散
    目录Python 代码模拟气体扩散计算并显示气体浓度的均值和标准差研究气体扩展的高级方法Python 中,可以使用数值模拟来研究气体扩散。 模拟气体扩散需要解决两个问题:流体动力学方...
    99+
    2023-01-31
    Python 数值模拟 气体扩散 Python气体扩散 Python数值模拟
  • 如何进行 Adaptive Cursor Sharing的研究
    如何进行 Adaptive Cursor Sharing的研究,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。    Adaptiv...
    99+
    2023-06-06
  • 深入研究rowcount函数的功能
    深入理解rowcount函数的用法,需要具体代码示例在数据库操作中,经常会使用到rowcount函数。该函数用于获取上一个执行的SQL语句所影响的行数。深入理解rowcount函数的用法,有助于更好地掌握数据库操作。在Python中,我们可...
    99+
    2023-12-29
    深入理解 rowcount函数
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作