go-zero 返回request timeout
func (l *GetFilesLogic) GetFiles(req *types.TorrentFilesReq) (resp *types.TorrentFilesResp, err error) {
// 创建客户端
client, err := torrent.NewClient(nil)
if err != nil {
fmt.Println(err)
return
}
defer client.Close()
// 下载 magnet 链接
t, err := client.AddMagnet(req.Magnet)
if err != nil {
fmt.Println(err)
return
}
// 等待种子完成下载
<-t.GotInfo()
fmt.Println("种子下载完成")
files := make([]string, 10)
// 选择文件下载
for _, fileIn := range t.Files() {
fmt.Println(fileIn.Path(), "文件名")
files = append(files, fileIn.Path())
}
return &types.TorrentFilesResp{Files: files}, nil
}
这里 因为在logic 内获取magnet 链接的文件名,是一个耗时很久的操作,然后 请求的反应结果就是request timeout
HTTP/1.1 503 Service Unavailable
Traceparent: 00-40b8eaf1f24fed0192c8babacbc9cf20-3cb766f38cd4141d-00
Date: Tue, 31 Jan 2023 08:37:00 GMT
Content-Length: 15
Content-Type: text/plain; charset=utf-8
Request Timeout
Response code: 503 (Service Unavailable); Time: 20009ms; Content length: 15 bytes
这里最后一行能看到 time 耗时是20s 还没有结束
因此可以在etc 下的yaml 文件添加一个Timeout: 10000(10s) 或者更长

浙公网安备 33010602011771号