技术博客
文本关键词抽取:批量文本处理与并发调用建议

文本关键词抽取:批量文本处理与并发调用建议

作者: 万维易源
2026-08-31
文本关键词抽取批量处理并发消息队列
# 文本关键词抽取:批量文本处理与并发调用建议 - **接口 / 接入点**:文本关键词抽取(apiCode 941)· 接入点 `941-1` - **是否免费**:是(有使用档次限制)| **请求方式**:POST / GET | **返回格式**:JSON - **适用人群**:中大型平台工程师、数据处理 - **阅读时间**:约 9 分钟 ## 核心要点 - 本接口**无原生批量**:单文本单次调用,文档未提供批量订阅 / 回调。 - 小批量直接循环;大批量走消息队列削峰 + 异步写结果。 - 务必配合缓存(见[缓存与限流策略](https://www.showapi.com/guides/text-keyword-cache-cost-941))与退避重试。 ## Why:大批量不能硬刷 要处理十万条评论、上万篇文章时,直接并发猛调会撞上使用档次限制,甚至被限流。本文给出「循环 / 队列」两种务实替代方案——注意:这是基于本接口能力的现实方案,不是接口自带批量。 ## What:能力边界(先说清) | 能力 | 本接口是否支持 | 说明 | |------|------|------| | 原生批量查询 | ❌ 不支持 | 单文本单次调用 | | 订阅推送 / 回调 | ❌ 不支持 | 同步请求-响应 | | 并发调用 | ✅ 可自实现 | 受档位限流约束 | > 文档仅提供 MCP 与 OpenAPI 集成能力,未提及批量或订阅,故批量需自行编排。 ## How:两种方案 ### 方案 A · 小批量直接循环(带并发上限) ```python import requests, hashlib, redis, time from concurrent.futures import ThreadPoolExecutor rds = redis.Redis(host="localhost", port=6379, db=0) def one(text, appkey, num=10): key = "kw:" + hashlib.md5(text.encode()).hexdigest() c = rds.get(key) if c: return c.decode().split("\n") try: r = requests.post("https://route.showapi.com/941-1", data={"appKey": appkey, "text": text, "num": str(num)}, timeout=10) body = r.json().get("showapi_res_body", {}) if str(body.get("ret_code")) == "0": kws = body.get("list", []) rds.set(key, "\n".join(kws), ex=86400*7) return kws except requests.exceptions.RequestException: time.sleep(1) return [] def batch(texts, appkey, workers=4): with ThreadPoolExecutor(max_workers=workers) as ex: return list(ex.map(lambda t: one(t, appkey), texts)) ``` ### 方案 B · 大批量走消息队列削峰 ``` [文本源] -> [MQ: keyword_jobs] -> [Worker 池,每 worker 带令牌桶限流] -> [抽取 -> 写 DB/缓存] |-> 失败消息回队,指数退避重试 ``` 要点:Worker 并发数受档位限制约束;用令牌桶控制 QPS;失败消息回队重试,避免丢数据。 ## 返回示例与解析 每条文本返回 `list` 关键词数组,批量结果按原顺序收集即可。 ## 进阶 / 边界 - 并发数:文档未给限流具体数值,以官方档位为准;建议从小并发起步压测,逐步上调。 - 幂等:以正文哈希为键,重复入队也只调一次(缓存兜底)。 - 失败处理:网络/限流失败必须重试,别静默丢弃。 ## FAQ **Q1:接口有批量接口吗?** A1:没有。文档只列单接入点 `941-1` 的同步调用,未提供批量订阅或批量入参;批量需自行循环或队列编排。 **Q2:能不能一次传多段文本?** A2:不能,参数 `text` 为单段文字。多段需逐条调用(或队列分发)。 **Q3:并发开多大合适?** A3:取决于你的使用档位。文档未给具体阈值,建议先小并发压测,观察限流再上调;同时做缓存减少总量。 **Q4:失败了数据会丢吗?** A4:若用队列方案,失败消息回队重试即可不丢;纯循环方案需自行记录失败项重试。 **Q5:和缓存篇怎么配合?** A5:本篇负责「怎么编排批量」,缓存篇负责「相同文本只调一次」,二者必须一起用才省档位。 ## 相关能力 / 下一步阅读 - [文本关键词抽取:免费接口下的缓存与限流策略(节省调用档位)](https://www.showapi.com/guides/text-keyword-cache-cost-941) —— 批量前必看 - [文本关键词抽取:通过 MCP 在 Cherry Studio / ChatBox 中直接调用](https://www.showapi.com/guides/text-keyword-mcp-941) —— 轻量调用另选 MCP - **本系列共 10 篇**:查看[文本关键词抽取指南总目录](https://www.showapi.com/guides/text-keyword-guides-941)