2

由于 golang 在单独的 goroutine 中处理传入的请求,我不清楚哪些类型的任务应该推迟到消息队列(例如 NSQ 消费者)处理,哪些类型的任务应该在 http 请求 goroutine 中处理。

4

1 回答 1

2

由于net/http包运行每个请求,您无需担心阻塞请求 goroutine。您应该问自己的真正问题是“我是否需要在向客户返回响应之前执行此操作,还是可以推迟到以后”。一般来说,如果我需要从数据库中获取一个响应,这个响应会阻塞请求 goroutine,那没关系。如果我现在可以返回响应并将消息放入队列中以便稍后执行操作,那也可以。

由于 request goroutine 的存在成本很小,而且它与其他请求隔离,所以你真的不需要太担心它。做对客户有意义的事情。

于 2015-04-18T03:57:57.293 回答