python-celery学习笔记

news/2024/7/24 8:02:47 标签: python

pythoncelery_0">用python-celery实现重试机制。

项目中需要异步执行某个任务,且失败的时候需要重试,且需要知道是否执行成功,可以这样设计。
案例代码如下:

python">@task()
def test_task(*args,**kwargs):
	#处理逻辑
    return True
python">def home(request):
    from celery_tasks import test_task
    rep = test_task.apply_async((2, 'a'), retry=True, retry_policy={
        'max_retries': 3,
        'interval_start': 0,
        'interval_step': 0.2,
        'interval_max': 0.2,
    })
    try:
        print (rep.get())
    except Exception as e:
        print ('添加报错信息' + str(e)

用apply_async进行异步操作,
retry:表示是否执行。
retry_policy={
‘max_retries’: 3, #表示重试3次
‘interval_start’: 0,#表示失败后到第一次重试时的时间间隔(即什么时候第一次重试)
‘interval_step’: 0.2, #表示 每次重试之间的时间间隔
‘interval_max’: 0.2, #表示 每次重试时,时间间隔
})
rep.get() #这个是一个阻塞函数,等异步任务执行结束的时候获取异步任务函数的返回值。
当然,这样设计,个人觉得不合理,直接放在业务中阻塞的话,十分不友好。如果加上等待时间的话,阻塞时间更久。 可以增加个中间者转发。这样就避免的用户在阻塞等待了,还可以增加定时功能,修改的代码如下。

python">@task()
def mid_task(*args,**kwargs):
	#处理逻辑
	from celery_tasks import test_task
    rep = test_task.apply_async((2, 'a'),countdown=100, retry=True, retry_policy={
        'max_retries': 3,
        'interval_start': 0,
        'interval_step': 0.2,
        'interval_max': 0.2,
    })
  	try:
        print (rep.get())
    except Exception as e:
        print ('添加报错信息' + str(e)
python">def home(request):
    from celery_tasks import mid_task
    mid_task.apply_async((2, 'a'), countdown=100)
    return response

http://www.niftyadmin.cn/n/1348129.html

相关文章

某60终端安全管理系统前台SQL注入漏洞复现

目录 1.漏洞概述 2.影响版本 3.漏洞等级 4.漏洞复现 4.1 FOFA实战复现 4.1.1 SQLmap爆库

Django_drf的搜索出现NotFound: Invalid page解决方案

Django_drf的搜索出现NotFound: Invalid page解决方案问题上代码刨析问题解决方法问题 前端列表在第3页进行搜索的时候,当搜索的结果数据小于20个的时候,drf的view_set的list接口会报NotFound: Invalid page。 想要的效果是在第N页搜索的时候&#xff0…

泛微e-cology8前台sql注入POC

目录 1.前言 2.POC 1.前言 泛微ecology8是一款OA办公产品。但其版本ecology8存在前台SQL注入。可获取系统管理员密码hash。该该漏洞是在2021年04月08日,HW第一天爆出。 泛微官网:https://www.weaver.com.cn/ 尝试提交到CNVD上,被驳回。本想捡个洞😂。确实是不可能的…

使用set对python中循环的优化

使用set对python中循环的优化set定义项目中常用去重手段使用set优化场景及方法使用set的类似场景set去重原理set定义 日常项目中大家或多或少都使用到集合。先走走流程,介绍下set的定义: 集合(set)是一个无序的不重复元素序列。可…

泛微e-cology8前台sql注入漏洞复现

目录 1.漏洞概述 2.影响版本 3.漏洞等级 4.漏洞复现 4.1 FOFA实战复现 4.2 泛微e-cology

CNVD-2020-62853 360天擎终端安全管理系统越权访问漏洞复现

目录 1.漏洞概述 2.影响版本 3.漏洞等级 4.漏洞复现 4.1 FOFA实战复现 4.2 360_Day-with_Unauthorized_POC-2.py

解读django-drf分页,进行自定义封装分页

django 的drf中自带有list的分页,部分源码如下: def list(self, request, *args, **kwargs):queryset self.filter_queryset(self.get_queryset())page self.paginate_queryset(queryset)if page is not None:serializer self.get_serializer(page, …

网康NGFW下一代防火墙远程命令执行漏洞复现

目录 1.前言 2.漏洞概述 3.漏洞原理 4.影响版本 5.漏洞等级 6.漏洞复现