通道在后台运行并收集数据

时间:2017-01-23 14:33:40

标签: go

我正在尝试定期运行一些函数并在后台运行,因为我也在服务于web服务。

import ("strings")
func run (cmd string, c chan []byte) {
    parts := strings.Fields(cmd)
    head := parts[0]
    parts = parts[1:len(parts)]

    out, err := exec.Command(head, parts...).Output()
        if err !=nil {
            log.Fatal(err)
        }
    c <-out
}

func main() {
      c:=make(chan []byte)
      go run ("date",c)
      output :=string(<-c)
}

我想每隔几秒运行“date”,“uptime”,“ps”等命令,并在后台运行web服务(net / http)将在前台运行,输出这些函数的结果。

实现这一目标的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

你应该首先找到一些lib或编写某种实用程序,它允许你连续运行一个任务,实际上你的代码没有。

例如:https://github.com/jasonlvhit/gocron

这只是一个例子,我不知道这个lib是否合适。

然后,您应该选择任务和Web服务之间的接口。

你可以在一个中运行,并使用频道,每个任务一个与go例程通信。

或者您可以使用您的go rountines编写的数据以及您的Web服务读取和处理来编写文本文件。

还有其他一些方法或解决方案,这是我现在最容易想到的。

希望这有帮助。