• 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环境加载问题

  • 相关阅读:
    jenkins中通过Publish Over SSH将项目部署到远程机器上
    GitHub 开源的 MySQL 在线更改 Schema 工具【转】
    MySQL ProxySQL读写分离实践
    MySQL ProxySQL读写分离使用初探
    LVS+Keepalived实现DBProxy的高可用
    Redis Codis 部署安装
    CS 和 BS 的区别和优缺点(转)
    Linux的SOCKET编程详解(转)
    数据结构-深度遍历和广度遍历(转)
    社保相关
  • 原文地址:https://www.cnblogs.com/zhangshijiezsj/p/14099394.html
Copyright © 2020-2023  润新知