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) 或者更长

posted @ 2023-01-31 16:42  Jack_Q  阅读(307)  评论(0)    收藏  举报