首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >golang:监控员工goroutine的web服务

golang:监控员工goroutine的web服务
EN

Stack Overflow用户
提问于 2014-09-18 09:33:04
回答 1查看 1.9K关注 0票数 5

假设我正在用golang编写一个REST web服务。在内部,我有几个会做事的工人。这种goroutine是根据需要由HTTP触发的。当然,我想以某种方式监控这些猩猩的进展。通常情况下,会有一个通道来发送更新、错误等等,主程序会在这些通道上执行select

但是,由于主程序的偶数循环忙于http.ListenAndServe(),所以我无法找到实现这一目标的方法。鉴于这似乎是一个相当常见的问题,我想知道是否有一个设计模式,我错过了。

编辑一些更多的技术细节。因此,我有一个管理资源库的Resource类。Resource.DoSomething()是一个长时间的手术,所以它会踢在后面的一个戈鲁蒂。将打开一个通道,以便对状态进行轮询。

当某个HTTP请求传入时,将触发此DoSomething()。但我没有任何背景资料来投票。目前,我的愚蠢计划是在下一个HTTP请求传入时轮询输入通道。这应该是充分的,但不是理想的-我想知道发生了什么在戈鲁蒂马上。

EN

回答 1

Stack Overflow用户

发布于 2014-09-18 09:42:16

启动一个Go例程,专门运行包含监视的select,将select放在它自己的for循环中:

代码语言:javascript
运行
复制
func main() {

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

    err := http.ListenAndServe()

    if err != nil {
        //TODO:
    }
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25909065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档