zoukankan      html  css  js  c++  java
  • Celery

    1.1 Celery介绍

     1、Celery 是一个 基于python开发的分布式异步消息任务队列,通过它可以轻松的实现任务的异步处理,
              如果你的业务场景中需要用到异步任务,就可以考虑使用celery

          2、你想对100台机器执行一条批量命令,可能会花很长时间 ,但你不想让你的程序等着结果返回,而是给你返回 一个任务ID,
            你过一段时间只需要拿着这个任务id就可以拿到任务执行结果, 在任务执行ing进行时,你可以继续做其它的事情

          3、Celery 在执行任务时需要通过一个消息中间件来接收和发送任务消息,以及存储任务结果, 一般使用rabbitMQ or Redis

     2、Celery有以下优点

     1、简单:一单熟悉了celery的工作流程后,配置和使用还是比较简单的

          2、高可用:当任务执行失败或执行过程中发生连接中断,celery 会自动尝试重新执行任务

          3、快速:一个单进程的celery每分钟可处理上百万个任务

          4、灵活: 几乎celery的各个组件都可以被扩展及自定制

    3、Celery基本工作流程图

    user:用户程序,用于告知celery去执行一个任务。
        broker: 存放任务(依赖RabbitMQ或Redis,进行存储)
        worker:执行任务

    1.2 celery简单使用 

    参照博客  https://www.cnblogs.com/xiaonq/p/14097376.html

    1、安装

          1.  安装celery pip3 install celery             # ln -s /usr/local/python3/bin/celery /bin/celery

          2.  安装redis

    2 在根目录创建clery_task的包

    3 在clery_task下面创建main.py 文件

    from celery import Celery
    
    
    app=Celery('mycelery',
               broker='redis://127.0.0.1:6379/14',  #任务存放的地方
               backend='redis://127.0.0.1:6379/15') #结果存放的地方
    
    
    # @app.task 指定将这个函数的执行交给celery异步执行
    
    
    @app.task
    def add(x,y):
    
        return x+y
    
    
    
    import os
    import sys
    # sys.path.append('..\clery_task\')
    
    CELEY_BASE_DIR=os.path.dirname(os.path.abspath(__file__))
    
    @app.task
    def send(content,mailaddr):
        sys.path.insert(0,os.path.join(CELEY_BASE_DIR,'../loonview_pro')) #项目名字
        from utils.rl_sms import mail
        mail(content,mailaddr)
    
    
        return '发送成功'
    

      4 启动celery

    # 单进程启动celery
    celery -A main worker -l INFO
    
    # celery 管理
    celery multi start celery_text -A celery_text -l debug --autoscale=50,5  # celery并发数 最多50最少5个
    ps auxww|grep "celery worker" | grep -v grep| awk '{print $2}' xargs kill-9  #关闭所有celery进程
    

      在 调用导包时调用可能会出错  可以尝试直接  不要把它标记为根源  导入celery时要在视图里面导包避免django环境加载问题

  • 相关阅读:
    HDU4507 吉哥系列故事――恨7不成妻(数位dp)
    UCF Local Programming Contest 2017 G题(dp)
    ICPC Latin American Regional Contests 2019 I题
    UCF Local Programming Contest 2017 H题(区间dp)
    HDU2089 不要62
    AcWing1084 数字游戏II(数位dp)
    UCF Local Programming Contest 2017 F题(最短路)
    Google Code Jam 2019 Round 1A Pylons(爆搜+贪心)
    AcWing1083 Windy数(数位dp)
    Vue
  • 原文地址:https://www.cnblogs.com/zhangshijiezsj/p/14099394.html
Copyright © 2011-2022 走看看