Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
3.6k views
in Technique[技术] by (71.8m points)

go工程可以生成多个进程吗

是这样的,我们现在在开发一个go项目,这是一个rpc服务。由于go项目在上线后其实就是一个可执行的二进制文件,所以我的理解是上线后会有一个进程在生产服务器上,等待着rpc请求并处理。

但是我需要在这一个项目下开发一个定时任务,每一个小时执行一次。那么我理解就是这个项目上线后应该有两个进程,一个用于接收rpc请求,一个执行定时任务。那么我该怎么做才能有两个进程呢?我的理解go项目的入口只有一个就是main包的main函数。

还望有在项目中写过go的定时任务的大佬指点一下


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

要这么做不是不可以, main 函数中启动两个goroutine, 一个goroutine跑rpc服务, 一个goroutine跑定时任务服务.

定时任务也有现成的库:github.com/robfig/cron.

当然,如果不是特殊情况的话,最好分开,编译成两个二进制文件进行部署.

func main() {
    go func() {
        // 启动rpc服务的逻辑
    }()
    
    go func() {
        // 启动定时任务服务的逻辑
    }()
    
    select{}
}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...