Tag

#Python

包含这个标签的文章。

Python 11 阅读

Python 并发子任务失败后仍在运行:TaskGroup 取消与资源回收实践

## 适用场景 一个聚合接口同时读取用户资料与订单摘要,只有两项都成功才返回页面。某个依赖提前失败后,其他查询的结果已经没有用途,却仍占用连接和并发名额。本篇用纯标准库示例讨论这种“共同成功、共同结束”的请求边界。 示例需要 Python 3.11 或以上版本,本文在 Python 3.14 环境执行验证。演示使用

阅读全文
安全 42 阅读

Webhook 验签通过仍被重复扣款:HMAC 签名与重放攻击防护实践

## 适用场景 支付、订单、代码托管或消息平台通过 Webhook 主动回调业务系统。接口已经校验 HMAC 签名,但偶尔仍出现同一事件被重复执行,甚至攻击者截获一条合法请求后,可以在数小时后原样重放。 本文以 Python 3.11、FastAPI 和 Redis 为例,实现一套可直接落地的接收端:对原始请求体进

阅读全文
Python 76 阅读

FastAPI 接口并发升高后全站变慢:阻塞调用卡住事件循环的定位与治理

## 适用场景 FastAPI 服务平时响应正常,但只要某个文件处理、旧版 SDK 调用或报表计算接口并发升高,健康检查、登录和其他无关接口也一起变慢。CPU、内存和数据库连接数未必异常,扩容 Uvicorn worker 后只能暂时缓解。 这类问题常见于 `async def` 路由中直接调用同步阻塞函数。本文给

阅读全文
Python 230 阅读

Python httpx 并发请求频繁 PoolTimeout:连接未释放与连接池参数的排查实践

## 适用场景 Python 服务或批处理脚本通过 `httpx` 调用第三方 HTTP API。流量上来后,应用日志开始出现 `httpx.PoolTimeout`,但目标接口的监控显示延迟正常;重启服务后短暂恢复,随后问题又出现。常见于 FastAPI/Django 的异步任务、数据同步程序和并发爬取工具。 本

阅读全文
Python 338 阅读

Celery 任务积压但部分 Worker 空闲:worker_prefetch_multiplier 引发分配不均的排查与治理

## 适用场景 使用 Celery + Redis/RabbitMQ 承担异步任务。队列中仍有大量待执行任务,但监控显示少数 Worker 忙碌、其余 Worker 空闲;或者短任务被长任务“压住”,整体延迟持续升高。本文以默认的 `prefork` 并发池和 RabbitMQ 为例,Redis broker 的排查

阅读全文
Python 2032 阅读

Python 装饰器 运行时间 第二版

当你需要测量函数执行时间并记录日志时,一个实用的工具是Timer类。本文将介绍如何使用Timer类来装饰同步和异步函数,并展示它们的用法。 首先,让我们来看一下Timer类的定义: ```python import asyncio import time from functools import wraps f

阅读全文
Python 1344 阅读

Python JsonPath模块使用

### JsonPath JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式,它使得人们很容易的进行阅读和编写。同时也方便了机器进行解析和生成。适用于进行数据交互的场景,比如网站前台与后台之间的数据交互。 #### json示例数据 ```json { "sto

阅读全文
Python 1389 阅读

celery rabbitmq 延迟消息

*使用 RabbitMQ 延迟消息插件来调度celery任务。* **RabbitMQ 延迟消息插件:** RabbitMQ 延迟交换插件用于实现消息到达交易所和传递到队列之间的等待时间。每次发布消息时,都可以指定以毫秒为单位的偏移量。 我们可以声明类型为“x-delayed-message”的交换,然后使用自定

阅读全文