讲师中心 微信公众号
AI工具推荐 视频效率加速

Python请求并发控制_限流策略说明【指导】

阿萱小哥_3685

阿萱小哥_3685

发布时间:2026-01-08 10:09:58

|

246人浏览过

|

来源于php中文网

原创

Python请求限流核心是控制单位时间请求数,避免触发服务端限流或资源耗尽;常用令牌桶模型,可用asyncio.Semaphore模拟或aiolimiter等库实现,同步场景可用time.sleep配合锁,异步高吞吐推荐aiohttp+Semaphore,生产环境需组合限流、标识、降级与监控。

python请求并发控制_限流策略说明【指导】

Python中实现请求并发控制和限流,核心在于限制单位时间内发起的请求数量,避免触发服务端限流、IP封禁或自身资源耗尽。关键不是单纯“多开线程”,而是有节制地调度请求节奏。

使用令牌桶(Token Bucket)做请求限流

令牌桶是最常用也最贴近真实业务场景的限流模型:系统以固定速率向桶中添加令牌,每次请求需消耗一个令牌;桶满则丢弃新令牌,无令牌则等待或拒绝。适合应对突发流量,同时保障平均速率可控。

  • 用 asyncio.Semaphore 模拟简单令牌桶:初始化时设最大并发数(即桶容量),每次请求前 acquire,完成后 release
  • 更精确的实现可结合 time.time() 动态计算令牌生成时间,例如每秒补10个令牌,就需记录上次补充时间并按比例发放
  • 推荐轻量库 aiolimiter(异步)或 ratelimit(同步),已封装好令牌桶逻辑,支持装饰器用法

基于 time.sleep 的同步请求节流

适用于 requests + threading 场景,逻辑直观、调试方便,适合 QPS 要求不高(如 ≤ 5/s)且不追求高精度的脚本任务。

python-script-generator
python-script-generator

快速生成专业的 Python 脚本和应用代码。一键创建完整项目结构,支持CLI、API、爬虫、Bot、Django等多种项目类型,包含完整的项目结构、配置文件、依赖管理、测试、README和文档。

下载
  • 在每次请求前调用 time.sleep(1 / target_qps),例如目标 2 QPS 就 sleep(0.5)
  • 注意:sleep 不能解决并发竞争问题,需配合锁(如 threading.Lock)确保计时/计数原子性
  • 若请求本身耗时波动大(如有的 100ms,有的 2s),单纯 sleep 会导致实际 QPS 偏低,建议改用“固定窗口”或“滑动日志”统计

用 asyncio + aiohttp 实现异步限流

高吞吐场景首选方案。aiohttp 天然支持异步 HTTP 请求,配合信号量与任务队列,可轻松控制并发数与总频次。

立即学习“Python免费学习笔记(深入)”;

  • 创建 asyncio.Semaphore(n) 控制最大并发连接数(如 n=10)
  • 对每个请求 task 加上 async with semaphore:,自动排队阻塞
  • 如还需全局 QPS 限制(比如每分钟最多 600 次),可搭配 asyncio.Queue 做请求缓冲,或用 asyncio.create_task() 启动独立限流协程定时清空计数器

生产环境建议:组合策略 + 监控兜底

单一限流机制难以覆盖所有异常,应分层设计:

  • 客户端本地限流(如令牌桶)作为第一道防线
  • 请求头中带上 X-RateLimit-Client-ID 等标识,便于服务端识别和差异化限流
  • 捕获 429(Too Many Requests)、403、连接超时等响应,自动降级(如延长 sleep 时间、切换代理、暂停任务)
  • 记录实际请求时间戳与状态,用 Prometheus + Grafana 可视化 QPS、失败率、等待延迟等指标
限流不是为了压测服务端,而是让自己的程序稳定、可预期、易维护。选对模型、配好参数、留出弹性,比盲目堆并发更有价值。

热门AI工具

更多
豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

相关专题

更多
登录token无效
登录token无效

登录token无效解决方法:1、检查token的有效期限,如果token已经过期,需要重新获取一个新的token;2、检查token的签名,如果签名不正确,需要重新获取一个新的token;3、检查密钥的正确性,如果密钥不正确,需要重新获取一个新的token;4、使用HTTPS协议传输token,建议使用HTTPS协议进行传输 ;5、使用双因素认证,双因素认证可以提高账户的安全性。

12786

2023.09.14

登录token无效怎么办
登录token无效怎么办

登录token无效的解决办法有检查Token是否过期、检查Token是否正确、检查Token是否被篡改、检查Token是否与用户匹配、清除缓存或Cookie、检查网络连接和服务器状态、重新登录或请求新的Token、联系技术支持或开发人员等。本专题为大家提供token相关的文章、下载、课程内容,供大家免费下载体验。

1545

2023.09.14

token怎么获取
token怎么获取

获取token值的方法:1、小程序调用“wx.login()”获取 临时登录凭证code,并回传到开发者服务器;2、开发者服务器以code换取,用户唯一标识openid和会话密钥“session_key”。想了解更详细的内容,可以阅读本专题下面的文章。

3457

2023.12.21

token什么意思
token什么意思

token是一种用于表示用户权限、记录交易信息、支付虚拟货币的数字货币。可以用来在特定的网络上进行交易,用来购买或出售特定的虚拟货币,也可以用来支付特定的服务费用。想了解更多token什么意思的相关内容可以访问本专题下面的文章。

5621

2024.03.01

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

5167

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

2288

2023.08.10

线程和进程的区别
线程和进程的区别

线程和进程的区别:线程是进程的一部分,用于实现并发和并行操作,而线程共享进程的资源,通信更方便快捷,切换开销较小。本专题为大家提供线程和进程区别相关的各种文章、以及下载和课程。

3818

2023.08.10

http500解决方法
http500解决方法

http500解决方法有检查服务器日志、检查代码错误、检查服务器配置、检查文件和目录权限、检查资源不足、更新软件版本、重启服务器或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

3163

2023.11.09

LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

80

2026.09.30

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn