2017-07-07 48 views
0

我正在爲使用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操作函數操縱全局計數器。 :-)如果你知道更好的解決方案,請告訴我。謝謝。 :-)

回答

0

net/rpc godoc示例它只是顯示如何使用全局默認值。而是創建您自己的rpc和http服務器實例。

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

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

正常關機,有幾個包。我知道這一個。