Web服务器中长时间运行的任务

时间:2019-03-11 04:53:56

标签: multithreading go asynchronous server

我正在使用fasthttp在Go中制作HTTP服务器。当用户访问某条路线时,说/foo我想启动一个运行时间很长的任务(认为10m +),但是立即响应该请求。即使函数返回或用户终止连接,该长时间运行的任务也应继续在后台运行,直到退出为止。

在Go中最好的方法是什么?

据我所知Goroutines可能不是正确的事情,因为它们只是为了短暂运行异步代码,还是我错了?

1 个答案:

答案 0 :(得分:2)

否:goroutine可以持续任意时间(和主程序):mentioned here只需要知道何时终止所述goroutine。

在这种情况下,您将必须检测到用户已终止连接,如“ Close the goroutine reading from a TCP connection without closing connection”。