feat: 添加 WithDefaultTimeout 默认超时配置

Invoke 之前完全依赖调用方传入的 ctx 控制超时,池子被占满或 Python 侧
handler 阻塞时,未设置 deadline 的调用会永久阻塞且不报错。新增
WithDefaultTimeout 选项,仅在 ctx 未设置 deadline 时兜底生效,调用方
显式设置的超时优先级更高。

同时补充 example 中的阻塞/超时演示(demoTimeout、demoBlocking)和
pool_test.go 集成测试,覆盖池占满排队、默认超时、显式 deadline 优先级、
流式输出超时后 channel 静默关闭等场景。
This commit is contained in:
2026-07-23 10:37:24 +08:00
parent db71a904e0
commit 0f4a4ded53
7 changed files with 367 additions and 7 deletions
+5
View File
@@ -3,6 +3,7 @@ package gobridge
import (
"context"
"net"
"time"
)
// singleWorkerPool 是 Pool 的包装,所有请求固定路由到同一个 worker 进程。
@@ -49,3 +50,7 @@ func (s *singleWorkerPool) nextReqID() uint64 {
func (s *singleWorkerPool) callbackDispatch(ctx context.Context, msg Message) (any, string) {
return s.pool.callbackDispatch(ctx, msg)
}
func (s *singleWorkerPool) defaultTimeout() time.Duration {
return s.pool.defaultTimeout()
}