用途:为 Django 后端提供推荐服务与 OpenSearch 搜索/信息流的实现模式。适用于构建或评审向下游扇出的 Django 视图、设计 OpenSearch 查询端点、混合多个排序器输出、排查下游降级导致的慢请求,以及为外部调用增加缓存、重试、熔断与限流。
主要能力:规则分 8 类,按执行生命周期影响排序。1. 扇出编排(CRITICAL,orch-,8 条):asyncio.gather 并行独立调用、return_exceptions=True、传递请求 deadline、模块级复用 httpx.AsyncClient、Semaphore 限并发、异步视图不阻塞、避免循环内 await、批量端点与 DataLoader。2. 外部服务保护(CRITICAL,protect-,7 条):按下游 p99 设定独立超时、每下游独立熔断、全抖动指数退避重试、4xx 不重试、每下游独立连接池、客户端令牌桶限流、解析 Retry-After。3. OpenSearch 查询(CRITICAL,search-,8 条):用 search_after 游标替代 from/size、限制 _source 字段、filter 与 must 区分、function_score 混合个性化信号、排序末尾加唯一 tiebreaker、通过别名查询、启用 request_cache、按 routing key 限制分片扇出。4. 结果混合与个性化(HIGH,blend-,5 条):跨源分数归一化(min-max 或 RRF)、MMR 提升多样性、跨源去重、冷启动回退、匿名与个性化路径区分。5. 缓存策略(HIGH,cache-,5 条):Redis 防击穿(SETNX 锁 + 抖动 TTL + 概率提前刷新)、缓存键含模型版本、按 segment 隔离、进程 LRU 加 Redis 两层、缓存负结果。6. 韧性与部分结果(HIGH,resilience-,5 条):部分响应信封、Redis 陈旧数据服务、默认排序回退、按源可观测性、搜索优雅降级分级。7. 异步与并发(MEDIUM-HIGH,async-,5 条):Django 4.1+ 异步 ORM 或 sync_to_async、ASGI worker、create_task 即发即忘、contextvars、客户端断开取消。8. API 响应设计(MEDIUM,api-,5 条):DRF 游标分页、select_related/prefetch_related、ETag 与 Cache-Control、压缩与字段裁剪、按用户与端点限流。
使用方式:查看 references/_sections.md 了解分类定义与影响依据;阅读各规则文件中的正误代码示例;assets/templates/ 提供 5 个模板:fanout_recommender_service.py.template、opensearch_search_view.py.template、result_blender.py.template、redis_cache_with_stampede.py.template、degraded_response.py.template。
适用场景:Django 推荐端点、搜索与无限信息流、下游 ML 推理扇出、下游降级排查。
限制:资料称其为实验性最佳实践;未提供具体版本、收费、价格与性能数据。本技能是 react-fetch-cache-patterns 的服务端对应物,相关技能还有 io-bound-data-processing 与 inngest-nextjs-patterns。