APIQIKAPIQIK
文档导航
场景参考

高并发落地实践

使用异步客户端、连接复用、信号量和有界队列构建稳定的并发调用服务。

高并发不是无限创建请求。复用客户端、限制在途数量、处理背压并观察长尾延迟,才能让服务稳定运行。

异步并发示例

import asyncio
import os
from openai import AsyncOpenAI

client = AsyncOpenAI(
    api_key=os.environ["APIQIK_API_KEY"],
    base_url="https://api.dimleap.cn/v1",
    timeout=60.0,
    max_retries=2,
)

semaphore = asyncio.Semaphore(20)

async def ask(question):
    async with semaphore:
        response = await client.chat.completions.create(
            model="glm-5.1",
            messages=[{"role": "user", "content": question}],
            max_tokens=300,
        )
        return response.choices[0].message.content

async def main():
    questions = [
        "解释 API 网关",
        "解释智能路由",
        "解释指数退避",
    ]
    results = await asyncio.gather(
        *(ask(question) for question in questions),
        return_exceptions=True,
    )
    for result in results:
        print(result)

asyncio.run(main())

容量保护

机制作用失败策略
并发信号量限制同时在途的上游请求。等待有上限,超时后返回繁忙提示。
有界队列吸收短时突发流量。队列满时拒绝低优先级请求。
速率限制按用户、租户或功能控制发送速率。返回明确的重试时间或降级结果。
熔断持续失败时减少无效请求。短时间快速失败,探测恢复后逐步放量。
缓存复用稳定、重复且允许缓存的结果。设置版本、有效期和数据隔离。

连接与客户端生命周期

  • 在进程生命周期内复用客户端,不要为每个请求创建一个新客户端。
  • 根据实例内存、文件描述符和业务延迟设定并发,而不是只看理论 QPS。
  • 将大请求与小请求分队列,避免长生成阻塞所有交互请求。
  • 压测应逐级升压并持续足够时间,观察 P99 和错误恢复过程。
  • 平台自动容灾不能替代你的入口限流和资源隔离。