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 的探究

  • 相关阅读:
    C#基本知识
    C#集合
    python学习DAY10(异常)
    python学习DAY10(属性方法)
    python学习DAY10(反射)
    python学习DAY10(类方法)
    python学习DAY10(模块)
    基于Servlet构建基础的后台服务器
    时间类型及格式化
    SpringCloud中服务消费者接受前台传参问题(报错415)
  • 原文地址:https://www.cnblogs.com/hailin2018/p/14282071.html
Copyright © 2011-2022 走看看