【问题标题】:Should all independent tasks be processed outside the http request goroutine?是否应该在 http 请求 goroutine 之外处理所有独立任务?
【发布时间】:2015-06-24 16:06:49
【问题描述】:

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

【问题讨论】:

  • 请改写为具体问题
  • @krait 问题改写

标签: http go message-queue nsq


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-29
    • 2015-03-27
    • 2012-03-19
    相关资源
    最近更新 更多