zoukankan      html  css  js  c++  java
  • celery_2:异步任务简单使用

    目录:

    一、celery应用场景

    二、使用 Celery 实现异步任务的步骤

    三、应用实例

    一、celery应用场景

    (1)异步任务( async task ):发送邮件、或者文件上传, 图像处理等等一些比较耗时的操作
    (2)定时任务( crontab ):在特定时间执行的任务

    二、使用 Celery 实现异步任务的步骤:

    (1) 创建一个 Celery 实例
    (2) 启动 Celery Worker ,通过delay() 或 apply_async()(delay 方法封装了 apply_async, apply_async支持更多的参数 ) 将任务发布到broker
    (3) 应用程序调用异步任务
    (4)存储结果 (发布的任务需要return才会有结果,否则为空)
     

    三、应用实例

    1、test.py

    from celery import Celery
    
    app = Celery('test', broker="redis://127.0.0.1:6379/1")
    
    
    @app.task
    def test_task(n):
        print(f'test: {n}')
        return n
    
    
    if __name__ == '__main__':
        # 直接通过delay() 或 apply_async()将异步任务发送到broker
        # test_task.delay('==== ttttt1 =====')
    
        # 延迟30秒执行
        test_task.apply_async(('==== ttttt3 =====',), countdown=30)

    2、执行脚本,直接通过delay() 或 apply_async()将异步任务发送到broker

    python test.py
    
    # 查看broker中间件redis,有celery, 类型是列表,存放的是当前正在队列中的 task,等待被 worker 所接收

    127.0.0.1:6379[1]> keys *
    1) "_kombu.binding.default"
    2) "_kombu.binding.celery"
    3) "celery"

    3、启动worker:

    celery -A test.app worker --loglevel=info

    本文参考自:Celery + Redis 的探究

  • 相关阅读:
    JAVA集合框架01
    java基础===>点餐系统
    java基础===>数组的应用
    java基础===>双重循环打印图形
    java基础 ===》循环结构
    JAVA基础==>witch的应用!
    选择结构!
    路由系统
    flask使用及返回值、配置文件的四种方式
    短信验证码操作
  • 原文地址:https://www.cnblogs.com/hailin2018/p/14282071.html
Copyright © 2011-2022 走看看