• celery简单介绍及使用


    Celery

    Celery是一个功能完备即插即用的异步任务队列系统。它适用于异步处理问题,当发送邮件、或者文件上传, 图像处理等等一些比较耗时的操作,我们可将其异步执行,这样用户不需要等待很久,提高用户体验。
    ​
    任务队列是一种跨线程、跨机器工作的一种机制,包含称作任务的工作单元。有专门的工作进程持续不断的监视任务队列,并从中获得新的任务并处理;elery通过消息进行通信,通常使用一个叫Broker(中间人)来协client(任务的发出者)和worker(任务的处理者). clients发出消息到队列中,broker将队列中的信息派发给worker来处理。
    ​
    特点:
        1,简单,易于使用和维护,有丰富的文档。
        2,高效,单个celery进程每分钟可以处理数百万个任务。
        3,灵活,celery中几乎每个部分都可以自定义扩展。
    ​
    Celery架构:
        Celery的架构由三部分组成,消息队列(message broker),任务执行单元(worker)和任务执行结果存储(task result store)组成。
        
    文档:http://docs.jinkan.org/docs/celery/getting-started/index.html
    

      

    安装

    pip3 install -U celery
    

      

    目录

    mycelery/
    ├── config.py         # 配置文件
    ├── __init__.py   
    ├── main.py           # 主程序
    └── sms/              # 一个目录可以放置多个任务,该目录下存放当前任务执行时需要的模块或依赖
            └── tasks.py  # 任务的文件,名称必须是这个!!!
        
    # main.py代码 :(主程序)
        from celery import Celery
        # 创建celery实例对象
        app = Celery("luffy")
    ​
        # 通过app对象加载配置
        app.config_from_object("mycelery.config")
    ​
        # 自动搜索并加载任务
        # 参数必须必须是一个列表,里面的每一个任务都是任务的路径名称
        # app.autodiscover_tasks(["任务1","任务2"])
        app.autodiscover_tasks(["mycelery.sms","mycelery.cache"])
    ​
        # 启动Celery的命令
        # 强烈建议切换目录到项目的根目录下启动celery!!
        celery -A mycelerymain worker --loglevel=info
        
        
    # config.py,代码:(配置文件)
        # 任务队列的链接地址
        broker_url = 'redis://127.0.0.1:6379/15'
        # 结果队列的链接地址
        result_backend = 'redis://127.0.0.1:6379/14'
        
        
    # tasks.py,代码:(任务文件)
        # celery的任务必须写在tasks.py的文件中,别的文件名称不识别!!!
        from mycelery.main import app
    ​
        @app.task  # name表示设置任务的名称,如果不填写,则默认使用函数名做为任务名
        def send_sms():
            print("发送短信!!!")
    ​
        @app.task  # name表示设置任务的名称,如果不填写,则默认使用函数名做为任务名
        def send_sms2():
            print("发送短信任务2!!!")
            
            
    # 执行任务文件:
        # 1. 声明一个和celery一模一样的任务函数,但是我们可以导包来解决
        from mycelery.sms.tasks import send_sms
    ​
        # 2. 调用任务函数,发布任务
        send_sms.delay(mobile,code)
        # send_sms.delay() 如果调用的任务函数没有参数,则不需要填写任何内容
    

      

    外部环境调用Django项目

    import os
    import django
    # 把celery和django进行组合,识别和加载django的配置文件
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'luffyapi.settings.dev')
    django.setup()
    

      

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    UVa Live 3942 Remember the Word
    UVa 11019 Matrix Matcher
    bzoj 4445 小凸想跑步
    Codeforces 832E Vasya and Shifts
    二值法方法综述及matlab程序
    排序算法(1)-插入,选择,冒泡
    如果我想了解一个陌生人
    Libsvm在matlab环境下使用指南
    科学预测世界杯-采用机器学习方法
    应用笔画宽度变换(SWT)来检测自然场景中的文本
  • 原文地址:https://www.cnblogs.com/zhoulangshunxinyangfan/p/13914413.html
Copyright © 2020-2023  润新知