标签:FastAPI

用FastAPI和Redis Streams构建爬虫任务分片与断点续爬系统

#用FastAPI和Redis Streams构建爬虫任务分片与断点续爬系统

本文深入探讨了传统Scrapy-Redis在节点崩溃时任务丢失的问题,并提出了基于Redis Streams消费者组的解决方案。通过FastAPI构建轻量调度层,实现任务分片与断点续爬,确保大规模爬虫集群的稳定性和数据一致性。文章详细对比了List、Pub/Sub与Streams的优劣,并给出了具体的架构设计与实现思路。

阿牛 34
git checkout
用FastAPI和Celery构建爬虫数据清洗管道:解决去重与字段校验瓶颈

#用FastAPI和Celery构建爬虫数据清洗管道:解决去重与字段校验瓶颈

爬虫数据清洗中,重复数据和字段缺失是常见瓶颈。本文介绍如何用FastAPI作为生产者接收原始数据,通过Celery异步任务队列实现去重、校验和存储的分离。使用Redis分布式锁和Bloomfilter解决高并发下的重复问题,并配置Celery的重试机制处理临时故障。架构解耦后,爬虫崩溃不影响清洗,Worker可独立扩容。

阿牛 16
git checkout
用Python和FastAPI实现基于令牌桶与滑动窗口的动态API限流中间件

#用Python和FastAPI实现基于令牌桶与滑动窗口的动态API限流中间件

本文介绍如何用Python和FastAPI构建一个支持令牌桶与滑动窗口双算法的动态API限流中间件。通过Redis存储状态,实现多租户独立配置与热更新,解决固定窗口限流在爬虫分发场景下的窗口切换堆积、令牌清空及多租户资源争抢问题。令牌桶提供突发弹性,滑动窗口做兜底熔断,配置可动态调整无需重启服务。

阿牛 25
git checkout
FastAPI + asyncpg 高并发连接池调优:从泄漏到排队问题的实战排查

#FastAPI + asyncpg 高并发连接池调优:从泄漏到排队问题的实战排查

凌晨两点,数据库连接数从 32 条飙升至 198 条,p95 延迟从 50ms 冲到 5s。排查发现 12% 的连接因异常处理未释放导致泄漏,且 asyncpg 连接池默认 queue_size=0 导致无限排队。修复后连接数稳定在 22 条,延迟回到 55ms。本文详解泄漏根因、排队机制及 min_size、max_size、queue_size 等关键参数调优策略。

阿牛 25
git checkout