• celery中异步延迟执行任务apply_anysc的用法


    描述

    首先说下异步任务执行delay()和apply_anysc()两者区别,其实两者都是执行异步任务的方法,delay是apply_anysc的简写。所以delay中传递的参数会比apply_anysc能传的参数少一些。那么延迟执行异步任务的关键点就在于传递的参数中。
    

    例子

    from datetime import datetime,timedelta
    eta = datetime.utcnow() + timedelta(seconds=10)
    t2 = test_task.apply_anysc(args=(10,20), eta=eta)
    
    分析:
    test_task:表示你要执行异步任务的那个被装饰器装饰的函数
    apply_anysc:这个就是执行异步延迟任务必须要调用的方法!!
    args : 这个是传递给那个被装饰器装饰的函数参数,如果有参数那么就需要写,没有那就不用写
    eta:这个是关键。意思是延迟10秒执行。可在后台查看是否是延迟十秒才真正执行
    

    一些参数说明

    countdown : 等待一段时间再执行.
    test_task.apply_async((2,3), countdown=5)
    
    eta : 定义任务的开始时间.这里的时间是UTC时间,这里有坑
    test_task.apply_async((2,3), eta=now+tiedelta(second=10))
    
    expires : 设置超时时间.
    test_task.apply_async((2,3), expires=60)
    
    retry : 定时如果任务失败后, 是否重试.
    test_task.apply_async((2,3), retry=False)
    
    retry_policy : 重试策略.
      max_retries : 最大重试次数, 默认为 3 次.
      interval_start : 重试等待的时间间隔秒数, 默认为 0 , 表示直接重试不等待.
      interval_step : 每次重试让重试间隔增加的秒数, 可以是数字或浮点数, 默认为 0.2
      interval_max : 重试间隔最大的秒数, 即 通过 interval_step 增大到多少秒之后, 就不在增加了, 可以是数字或者浮点数, 默认为 0.2 .
    

    -------------------------------------------

    个性签名:代码过万,键盘敲烂!!!

    如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!

  • 相关阅读:
    Qt4的项目在转到Qt5时遇到的问题解决方案链接
    禁止MFC的MDI程序自动创建空白子窗体
    工厂方法(factory method)
    简单工厂模式(Simple Factory)
    单例模式(Singleton Pattern)
    设计模式六大设计原则
    Windows Server 2003 Sp2 下无法安装SQL Server 2008 Management Studio Express问题
    原生javascript和jquery实现简单的ajax例子
    MS Sql server 2008 学习笔记
    C#面向对象学习笔记概要
  • 原文地址:https://www.cnblogs.com/weiweivip666/p/13966300.html
Copyright © 2020-2023  润新知