如何避免celey定时任务的重复执行(通过celery_one)

本文介绍了在使用celery进行定时任务时遇到的任务重复执行问题,原因是任务执行时间超过设定间隔导致。通过查阅官方文档,发现任务时间间隔设置不当会触发任务重叠。为了解决这一问题,作者探索了git上的celery_one库,并成功应用,避免了任务重复。安装celery_once并调整任务调用方式,即可有效防止celery任务重复执行。
摘要由CSDN通过智能技术生成

场景:在公司通过celery写了几个定时的任务,但是过了一段时间我发现这些定时任务的日志里面竟然出现的重复的结果,定时任务大概就是定期的去统计数据什么的,类似报表那样,可是今天我发现竟然有两条一模一样的报表,于是去查了一下celery的运行日志,发现同一时间内(1s内)竟然同时发送了两次的任务,也就是同时产生了两个worker。然后就出现了两条一毛一样的结果,还写到了我的报表里面。
查了一下官方celery的文档(地址:http://docs.celeryproject.org/en/latest/index.html)
终于发现了问题:原来是我任务的时间间隔不够长
打个比方:A定时任务5分钟执行一次统计报表,但是A任务遇到数据量大的报表时,统计时间超过了5分钟,这时celery又接收到了新的下一个周期的A任务,于是celery又去统计之前的数据,这就造成了数据重复。
于是我想把时间给他改长一点,但是这不是解决问题的方法,万一哪一天来了个超大的数据,又超时了咋办?
于是我就去google一次,发现git上面有一个库可以解决这个问题(celery_one的git网址
点进去看了一下,简单易操作,于是就去测试了一下,发现真的可以解决重复执行的问题!!!
大概流程就是:

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值