go runtime_error ai_generated true

rpc 错误:代码 = Canceled 描述 = 上下文已取消

rpc error: code = Canceled desc = context canceled

ID: go/grpc-canceled-context

其他格式: JSON · Markdown 中文 · English
80%修复率
87%置信度
0证据数
2024-07-05首次发现

版本兼容性

版本状态引入弃用备注
google.golang.org/grpc v1.40+ active

根因分析

传给 RPC 的上下文在完成前被取消。通常是调用方上下文被取消(父请求结束、客户端断开,或 defer 过早调用 cancel())。

English

The context passed to the RPC was canceled before completion. Usually the caller's context was canceled (parent request ended, client disconnected, or cancel() called early due to a defer).

generic

解决方案

  1. 85% 成功率
    ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
    defer cancel()
    resp, err := client.Do(ctx, req)
  2. 80% 成功率
    ctx, cancel := context.WithTimeout(parent, 5*time.Second)
    defer cancel() // must be after the call that uses ctx
    resp, err := client.Do(ctx, req)

无效尝试

常见但无效的做法:

  1. 95% 失败

    A canceled context stays canceled; every retry immediately returns Canceled without contacting the server.

  2. 70% 失败

    Loses deadline propagation and cancellation, causing leaked goroutines and requests that outlive their callers.