gpt4 book ai didi

rest - 戈朗 : web service that monitors worker goroutine

转载 作者:IT王子 更新时间:2023-10-29 01:27:53 24 4
gpt4 key购买 nike

假设我正在用 golang 编写一个 REST 网络服务。在内部,我有几个 worker goroutine 可以做事。这样的 goroutine 由 HTTP API 按需触发。当然,我想以某种方式监视这些 goroutines 的进度。通常 goroutine 会有一个 channel 来发送更新、错误等。主程序会在这些 channel 上执行 select

但是,由于主程序的偶数循环忙于 http.ListenAndServe(),我看不到实现这一点的方法。鉴于这似乎是一个很常见的问题,我想知道是否缺少一种设计模式。

[编辑]一些更多的技术细节。所以我有一个管理资源池的 Resource 类。 Resource.DoSomething() 是一个很长的操作,所以它会在后台启动一个 goroutine。将打开一个 channel 以允许轮询状态。

当某个 HTTP 请求进入时,此 DoSomething() 被触发。但是我没有上下文可以从中轮询状态。目前,我的愚蠢计划是在下一个 HTTP 请求进入时轮询输入 channel 。这应该足够了,但并不理想——我想马上知道那个 goroutine 中发生了什么。

最佳答案

启动一个 Go 例程专门运行包含监控的选择,将选择放入它自己的 for 循环中:

func main() {

go func() {
for {
select {
//TODO: Insert Code Here?
}
}
}()

err := http.ListenAndServe()

if err != nil {
//TODO:
}
}

关于rest - 戈朗 : web service that monitors worker goroutine,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25909065/

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