• Celery使用方式


    Celery是一个异步的任务队列(也叫做分布式任务队列),一个简单,灵活,可靠的分布式系统,用于处理大量消息,同时为操作提供维护此类系统所需要的工具。

    celery的优点
    1:简单,容易使用,不需要配置文件
    2:高可用,任务执行失败或执行过程中发生连续中断,celery会自动尝试重新执行任务
    3:快速,一个单进程的celery每分钟可以处理上百万个任务
    4:灵活,几乎celery的各个组件都可以被扩展

    celery应用场景
    1:异步发邮件,一般发邮件等比较耗时的操作,这个时候需要提交任务给celery就可以了,由worker进行发邮件操作
    2:有些跑批量接口任务,需要耗时较长,也可以做成异步任务
    3:定时调度任务

    Celery与Django一起使用(以发送短信为例)
    独立于项目新建一个package包
    在package包中新建一个名为sms的package包
    新建tasks.py文件

    #定义耗时的函数
    from utils.ytx_sdk.sendSMS import CCP
    from celery_tasks.main import app
    
    #为函数添加装饰器,这个函数就成为了celery的任务
    @app.task
    def send_sms_code(mobile,code,expires,template_id):
        try:
            # CCP.sendTemplateSMS(mobile,code,expires,template_id)
            print(code)
        except:
            return '发送短信失败'
    

    在package包中新建config.py
    内容如下(中间人,接收生产者发来的消息即Task,将任务存入队列。任务的消费者是Worker。Celery本身不提供队列服务,推荐用Redis或RabbitMQ实现队列服务。)

    #指定代理人队列==>redis
    broker_url='redis://127.0.0.1:6379/15'
    

    在package包中新建main.py
    内容如下(需要将task注册到celery应用中)

    #启动工人的文件
    from celery import Celery
    # 为celery使用django配置文件进行设置
    import os
    if not os.getenv('DJANGO_SETTINGS_MODULE'):
        os.environ['DJANGO_SETTINGS_MODULE'] = 'yinyue.settings.dev'
    # 创建celery应用
    app = Celery('yinyue')
    # 导入celery配置
    app.config_from_object('celery_tasks.config')
    # 自动注册celery任务
    app.autodiscover_tasks([
        'celery_tasks.sms'
    ])
    

    在django框架对应模块的视图中使用

    #调用celery的任务:任务名.delay(参数)
    send_sms_code.delay(mobile,code,constants.SMS_CODE_EXPIRES/60,1)
    

    启动celery服务: celery -A celery_tasks.main worker -l info

  • 相关阅读:
    Chapter5树状数组与线段树(补充差分)(待补全两题)
    Chapter4枚举,模拟与排序
    CopyOnWriteArrayList实现原理及源码分析
    BAT大厂面试官必问的HashMap相关面试题及部分源码分析
    ArrayList、Vector、LinkedList、CopyOnWriteArrayList等详解
    java_集合知识点小结
    Fork-Join 原理深入分析(二)
    Fork-Join分治编程介绍(一)
    ForkJoin全解2:forkjoin实际工作流程与实现
    ForkJoin全解1:简单使用与大致实现原理
  • 原文地址:https://www.cnblogs.com/zhouzetian/p/13380533.html
Copyright © 2020-2023  润新知