关机时的Golang JSON-RPC服务器控制

关机时的Golang JSON-RPC服务器控制

问题描述:

我正在为使用Golang的内置JSON-RPC服务器的程序编写关机处理程序,但遇到了困难。你能帮我吗?关机时的Golang JSON-RPC服务器控制

我停止接受输入连接,停止接受传入请求现有的连接(发送错误,是真的),但我有一个我无法控制的时刻,或者至少,我不知道如何控制。

的问题是:

如何保证exisiting现有连接的请求的结果给予Golang的客户端的内置的JSON-RPC服务器?

我想控制调用RPC方法的结构,但它不在我的代码中。例如,我有一个RPC Action'User.Get'。我有一个我控制的名为'Get'的函数。我如何控制启动这个'Get'函数的代码?我必须修改Google的RPC服务器还是有更有效的方法?

也许,RPC服务器中存在一些变量,其中包含正在处理的活动请求的数量?

我在https://golang.org/src/net/rpc/server.go的​​中看到NumCalls()numCalls。问题是这个字段不公开...此外,.../rpc/server.go使用sync.Map,它不编译。我的Golang版本太旧了? :)

似乎现在最简单的方法是从所有RPC操作函数操纵全局计数器。 :-)如果你知道更好的解决方案,请告诉我。谢谢。 :-)

net/rpc godoc示例它只是显示如何使用全局默认值。而是创建您自己的rpc和http服务器实例。

import "net/rpc" 
import "net/http" 

rpcServer := rpc.NewServer() 
// rpc stuff 
httpServer := &http.Server{ 
    Handler: rpcServer, 
} 
// graceful shutdown stuff 

正常关机,有几个包。我知道这一个。