当前位置: 首页 > news >正文

【Celery】任务Failure或一直超时Pending

编写背景

task进入队列后,部分任务出现Failure或者一直Pending,且业务代码没有报错。

运行环境

celery配置

from celery import Celery
broker = 'redis://:@127.0.0.1:6379/1'
backend = 'redis://:@127.0.0.1:6379/2'
app = Celery(broker=broker,backend=backend,include=['celery_task.tasks'])

task.py

from celery_task.celery import app
from celery.result import AsyncResult
@app.task
def your_task():# your taskpass@app.task
def check_task(task_id):# task statusstatus = AsyncResult(task_id).statusreturn status

celery部署方式

docker 部署

version: '3'
services:services_name: testimage:test#..... 省略
celery:# ......省略command: celery --app=celery_task worker -P gevent -l INFO

服务单台机器部署如上所示,当然,这里部署了多台机器。就是说,有多个celery worker能接收任务。

任务以redis为支撑,进入队列的任务。部分任务通过AsyncResult查询结果为Failure,且一直无法重试成功。

解决思路

初步怀疑任务执行失败的原因如下:
1.业务代码存在BUG,出现报错
2.celery任务负载过大,任务在队列等待时间过长。
3.redis 库号有其它服务在使用

经过日志排查剔除了 1 跟2。此时深度怀疑,有其他Celery服务用了跟这个队列一样的redis库号。
验证:
通过 CLIENT LIST查看所有连接redis,这里为了方便进行编码

import redis
# 连接Redis服务器
r = redis.Redis(host='127.0.0.1', port=6379, db=1)# 获取客户端连接列表
client_list = r.client_list()
a = []
c  = []
# 打印连接列表
for client in client_list:ip = client['addr'].split(":")[0]db = client["db"]res = ip+":"+db# 查看与celery队列同一库号的所有ip连接if res not in c and db=="1":c.append(res)if res not in a and db=="2":a.append(res)
# 这里结果不做展示print(a,c)

此时发现,除了本服务的ip,还有另外的IP一样用了同样的库号。大可断定,进入队列的任务,是被其他worker分走了,所以任务一直Failure。
看下面一张图就明朗了:
在这里插入图片描述
这里假设redis分库为4个。然后有两个Celery在运行,但是里面的Worker是不一样的,两个Celery却用了同一个库号。因此,本应在Celery A执行的任务,会被分配到Celery B的worker上执行。被分配到Celery B 的任务就会Failure。

相关文章:

【Celery】任务Failure或一直超时Pending

编写背景 task进入队列后,部分任务出现Failure或者一直Pending,且业务代码没有报错。 运行环境 celery配置 from celery import Celery broker redis://:127.0.0.1:6379/1 backend redis://:127.0.0.1:6379/2 app Celery(brokerbroker,backendbackend,includ…...

【严重】VMware Aria Operations for Logs v8.10.2 存在反序列化漏洞(CVE-2023-20864)

漏洞描述 VMware Aria Operations for Logs前身是vRealize Log Insight,VMware用于处理和管理大规模的日志数据产品。 VMware Aria Operations for Logs 8.10.2版本中存在反序列化漏洞,具有 VMware Aria Operations for Logs 网络访问权限的未经身份验…...

java实现乘法的方法

我们都知道,乘法运算的核心思想就是两个数相乘,如果能将乘法运算转化成一个加数的运算,那么这个问题就很容易解决。比如我们要实现23的乘法,首先需要定义两个变量:2和3。我们将这两个变量定义为一个变量:2x…...

SSD目标检测

数据集以及锚框的处理 数据集: 图像:(batch_size , channel , height , width) bounding box: (batch_size , m , 5) m: 图像中可能出现的最多边界框的数目 5: 第一个数据为边界框对应的种…...

SpringBoot项目结构及依赖技术栈

目录 1、pom.xml文件配置说明 2、SpringBoot项目结构说明 3、入门案例关键配置说明 🌈 前面我们学习了SpringBoot快速入门案例,本节我们通过POM文件和项目结构分析两部分内容了解下关于SpringBoot的一些配置说明,以便全面了解SpringBoot项…...

crash怎么分析kdump core文件

kdump是Linux内核的一种机制,可以在出现系统崩溃时自动生成一个内存转储文件(core file),也称为crash dump。这个core文件包含了系统当时的内存状态和各个进程的调用栈信息,可以帮助分析和定位崩溃的原因。 要分析kdump core文件&#xff0c…...

微内核与宏内核的区别和联系

微内核与宏内核的区别和联系 一、什么是内核?二、微内核和宏内核的区别 一、什么是内核? 内核是计算机操作系统的核心程序,它负责整个OS功能的调控。 二、微内核和宏内核的区别 微内核(Micro)宏内核(Monolithic/ Macro)地址空间内核服务和用…...

都什么年代了,还在用Excel和ACCESS做应用系统?快来学Eversheet

表格用的越久,就越头疼 稍微有规模的企业,各种表格都会多如牛毛,一堆堆的,有时候这里一张,那里一张,容易整乱,更容易丢失。不管你是用WPS还是用Excel,有些问题你还是依旧解决不了。…...

【JAVAEE】JAVA数据库连接(JDBC)

1.什么是JDBC? Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC也是Sun Microsyste…...

Nestjs全网最佳翻译-概况-守卫-Guards

守卫 带上装饰器 Injectable() 并实现了 CanActivate 接口的类,就是守卫。 守护只做一件事情。他们根据运行时的某些条件(如权限、角色、ACL等)来决定一个给定的请求是否会被路由处理程序处理。这通常被称为授权。在传统的Express应用程序中…...

【软考网络管理员】2023年软考网管初级常见知识考点(3)- 网络体系结构

【写在前面】也是趁着五一假期前再写几篇分享类的文章给大家,希望看到我文章能给软考网络管理员备考的您带来一些帮助,5月27号也是全国计算机软件考试统一时间,也就不用去各个地方找资料和代码了。紧接着我就把我整理的一些资料分享给大家哈&…...

javascript正则表达式大括号、中括号、小括号的作用以及应用场景

在JavaScript正则表达式中,大括号 {}、中括号 [] 和小括号 () 都有不同的作用和应用场景。 大括号 {} 在正则表达式中,大括号 {} 表示重复次数。以下是一些常见的应用场景: {n}:精确匹配出现的次数,例如 \d{3} 匹配…...

5年测试老鸟总结,自动化测试的实施到落地,看这一篇足够...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 Python自动化测试&…...

通达信顾比倒数线指标公式,信号不漂移

顾比倒数线是由技术派大师戴若顾比发明的,该指标利用三个重要的价格来判断入场或离场时机,可用于盘后制定下一个交易日的操作计划。此外,顾比倒数线还可以用于补充验证其他指标。 在编写顾比倒数线选股公式之前,需要先了解顾比倒…...

网络安全: CIDR无类别路由

网络安全: CIDR无类别路由 CIDR是无类别路由,出现CIDR的原因是因为ipv4的地址被使用完客,CIDR的出现暂缓了ipv4用完的速度。 原本的ipv4很刻板,网络号分成8位,16位,24位作为掩码,也就是 xxx.0…...

NetMQ | 发布订阅时使用含通配符的Topic

NetMQ | 发布订阅时使用含通配符的Topic 文章目录 NetMQ | 发布订阅时使用含通配符的Topic前言通配符如何使用通配符通配符的作用结束语 前言 今天我来介绍一下NetMQ发布订阅时如何使用含通配符的Topic,让我们能够更加灵活地订阅消息。 什么是Topic? 在NetMQ中&am…...

行为型模式-模板方法模式

模板方法模式 概述 在面向对象程序设计过程中,程序员常常会遇到这种情况:设计一个系统时知道了算法所需的关键步骤,而且确定了这些步骤的执行顺序,但某些步骤的具体实现还未知,或者说某些步骤的实现与具体的环境相关…...

IPsec中IKE与ISAKMP过程分析(快速模式-消息1)

IPsec中IKE与ISAKMP过程分析(主模式-消息1)_搞搞搞高傲的博客-CSDN博客 IPsec中IKE与ISAKMP过程分析(主模式-消息2)_搞搞搞高傲的博客-CSDN博客 IPsec中IKE与ISAKMP过程分析(主模式-消息3)_搞搞搞高傲的博客…...

PostgreSQL 数据类型转换

各种数据类型(日期/时间、integer、floating point和numeric)转换成格式化的字符串及反过来从格式化的字符串转换成指定的数据类型,在实际操作中经常遇到。下面总结了一些常用的函数。 日期操作函数 函数返回类型描述实例to_char(timestamp…...

【Java笔试强训 1】

🎉🎉🎉点进来你就是我的人了博主主页:🙈🙈🙈戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔🦾🦾🦾 目录 一、选择题 二、编程题 🔥组队竞…...

如何像管理代码一样构建个人技能树:从知识管理到职业发展

1. 项目概述与核心价值最近在整理个人知识库和技能树时,发现了一个挺有意思的项目,叫mxyhi/ok-skills。乍一看,这像是一个个人仓库,但深入探究后,我发现它远不止是一个简单的代码托管。它更像是一个结构化的个人能力发…...

5步构建智能建筑通信系统:BACnet4J纯Java协议栈的架构师指南

5步构建智能建筑通信系统:BACnet4J纯Java协议栈的架构师指南 【免费下载链接】BACnet4J BACnet/IP stack written in Java. Forked from http://sourceforge.net/projects/bacnet4j/ 项目地址: https://gitcode.com/gh_mirrors/ba/BACnet4J 在智能建筑和工业…...

3分钟彻底告别Windows资源管理器窗口混乱:QTTabBar终极标签页解决方案

3分钟彻底告别Windows资源管理器窗口混乱:QTTabBar终极标签页解决方案 【免费下载链接】qttabbar QTTabBar is a small tool that allows you to use tab multi label function in Windows Explorer. https://www.yuque.com/indiff/qttabbar 项目地址: https://gi…...

【Claude Redis缓存方案实战白皮书】:20年架构师亲授高并发场景下99.99%命中率的5层缓存协同设计

更多请点击: https://intelliparadigm.com 第一章:Claude Redis缓存方案的演进逻辑与设计哲学 Claude 系统在高并发对话场景下对低延迟、强一致性的缓存层提出严苛要求。其 Redis 缓存方案并非简单封装客户端,而是围绕“语义感知缓存生命周期…...

如何快速掌握哔哩下载姬:B站视频下载的终极免费解决方案

如何快速掌握哔哩下载姬:B站视频下载的终极免费解决方案 【免费下载链接】downkyi 哔哩下载姬downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频提取、去水印等&…...

设计程序统计城市社区医疗站点接诊数据,优化医疗点位分布,方便居民就近看病,解决就医难问题。

一、实际应用场景描述某城市卫健委希望优化社区卫生服务中心布局,但面临以下现实情况:- 各社区接诊量差异巨大- 部分点位长期排队,部分点位资源闲置- 居民跨区就医成本高- 缺乏基于数据的点位调整依据👉 技术目标:用 P…...

基于Arduino Yun的DIY无线安防摄像头:运动检测、云端同步与实时流媒体

1. 项目概述与核心价值 手头有个闲置的Arduino Yun和USB摄像头,一直琢磨着怎么把它们利用起来,做个有点意思的东西。市面上那些无线监控摄像头功能是挺全,但总觉得少了点“掌控感”,数据存在哪里、怎么访问,都得听厂家…...

OpenClaw与企业微信联动:自动发送工作通知、统计员工回复情况,简化管理流程

OpenClaw 赋能企业微信:构建智能高效的自动化管理新范式在数字化转型浪潮席卷各行各业的当下,企业对于内部流程优化、管理效率提升以及员工协作体验改善的需求日益迫切。传统的管理方式,如手动发送通知、人工统计反馈、层层审批流转等&#x…...

企业内如何通过Taotoken实现大模型API的统一管理与审计

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 企业内如何通过Taotoken实现大模型API的统一管理与审计 对于需要将大模型能力集成到内部系统的企业而言,直接让各个团队…...

3分钟学会Charticulator:零代码制作专业数据图表的终极指南

3分钟学会Charticulator:零代码制作专业数据图表的终极指南 【免费下载链接】charticulator Interactive Layout-Aware Construction of Bespoke Charts 项目地址: https://gitcode.com/gh_mirrors/ch/charticulator 还在为制作专业图表而头疼吗?…...