gpt4 book ai didi

Golang http写响应无需等待完成

转载 作者:数据小太阳 更新时间:2023-10-29 03:38:39 29 4
gpt4 key购买 nike

我正在构建一个应用程序,它构建一个 pdf 文件并在收到请求时将其返回给客户端。

由于其中一些 pdf 文件可能需要一些时间才能生成,我想在客户端运行时定期将某种状态更新发送回客户端。

当它完成构建 pdf 文件时,它也应该返回给客户。

类似于:

func buildReport(writer http.ResponseWriter, request *http.Request){
//build pdf build pdf file
for { //for example purposes only
writer.Write([]byte("building. Please wait."))
}
pdf.OutputFileAndClose("report.pdf")
//set header to pdf so that the client knows it's a PDF
writer.Header().Set("Content-Type", "application/pdf")
http.ServeFile(writer, request, "report.pdf")
}

func main() {
http.HandleFunc("/", buildReport)
http.ListenAndServe(":8081", nil)
}

设置 header 可能不起作用,因为作者只能有一个 header 。

最佳答案

TL;DR 是它不能以这种方式实现。你需要

  1. 请求创建 PDF 的 API。在任务队列中对 PDF 创建作业进行排队(这样太多的 PDF 创建请求就不会破坏 HTTP 服务器工作池)
  2. 提供一个 API,让您可以使用 PDF 渲染检查您的位置(我假设该工作可以提供临时统计数据)。这将由客户定期进行调查。
  3. 用于在 PDF 准备就绪后提取 PDF 的 API。

希望这对您的项目有所帮助,祝您好运。

关于Golang http写响应无需等待完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46889923/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com