• celery异步分布式框架使用一


    一、celery简介

          1、Celery 分布式任务队列
          2、Celery 是一款非常简单、灵活、可靠的分布式系统,可用于处理大量消息,并且提供了一整套操作此系统的一系列工具。
          3、Celery 是一款消息队列工具,可用于处理实时数据以及任务调度。
          4、Celery 通过消息机制进行通信,通常使用中间人(Broker)作为客户端和职程(Worker)调节。启动一个任务,
    客户端向消息队列发送一条消息,然后中间人(Broker)将消息传递给一个职程(Worker),最后由职程(Worker)进行执行中间人(Broker)分配的任务。
          5、Celery 可以有多个职程(Worker)和中间人(Broker),用来提高Celery的高可用性以及横向扩展能力。
    二、版本需求(这个是要注意一下)
      1、Python版本:Python 3.6.8
      2、celery版本:5.1.2
      一开始我是用的是Python3.7,然后发现各种坑,经多方查证发现是Python版本高了
    三、简单使用
      **我们最终肯定是想将celery使用与项目中,所以我们直接略过最简单的使用
      **目前celery使用的是redis,所以redis的安装可以参考其他,例如菜鸟教程。建议使用docker容器启动,简单方便
      1、关于celery的文件布局:
      
        celery_demo:可以理解为项目文件夹,
          --proj:celery的文件夹,相关的配置文件,定义celery,包括任务,主要就是这些了
            --celeryconfig.py:celery的配置文件
            --celery:celery启动代码
            --tasks.py:存放任务,没有特殊要求,可以就采用该文件名
          --zhixing.py:调用celery的任务
      2、关于celeryconfig.py配置文件简单讲解:
    # coding=utf-8
    
    broker_url  = 'redis://127.0.0.1:6379/0' # redis 存储发送端来的任务队列
    result_backed = 'redis://127.0.0.1:6379/1' # 用redis存储执行端执行得到结果

      3、celery文件代码简单讲解

    # coding=utf-8
    
    from . import celeryconfig # 注意导包方式,celery对于这个比较敏感
    from celery import Celery
    
    app = Celery(
        "proj",
        include=['proj.tasks'] # 此处是tasks任务
    )
    
    app.config_from_object(celeryconfig) # 使用配置文件
    
    if __name__ == "__main__":
        app.start()

      4、tasks.py任务文件:

    # coding=utf-8
    
    import time
    
    from .celery import app
    
    @app.task
    def add(x=3, y=4):
        return x + y
    
    @app.task
    def mul(x, y):
        return x * y

      5、zhixing.py文件:

    # coding=utf-8
    
    import time
    
    from proj.tasks import add
    
    def start():
        res = add.delay(4,4)
        print(res)
    
    
    if __name__ == "__main__":
        start()

      6、演示:

      ①、启动celery:celery -A proj worker -l info

           

      ②、执行调用代码

      

           

    目前最基本简单的使用演示结束。更多可以参考相关文档。

     
     
     
     
  • 相关阅读:
    asp.net错误日志写入
    UniqueID和ClientID的来源
    js刷新页面方法大全
    Web开发 < base target>
    Asp.net页面使用showModalDialog时Postback弹出新页面解决办法
    Asp.net 回车默认按钮
    SQL语句添加删除修改字段及一些表与字段的基本操作
    国内使用google地图的初级使用
    [Asp.NET MVC+EasyUI] TreeGrid全部加载及懒加载示例
    SqlServer清空数据表数据
  • 原文地址:https://www.cnblogs.com/leslie003/p/15882461.html
Copyright © 2020-2023  润新知