J'écris un gestionnaire d'arrêt pour un programme qui utilise le serveur JSON-RPC intégré de Golang et j'ai rencontré une difficulté. Pourriez-vous m'aider avec? J'arrête d'accepter les connexions entrantes, arrête d'accepter les demandes entrantes pour les connexions existantes (envoyer une erreur, pour être vrai) mais j'ai un moment que je ne peux pas contrôler ou, au moins, je ne sais pas comment contrôler.Commande de serveur JSON-RPC de Golang à l'arrêt
La question est:
Comment puis-je garantir que les résultats de exisiting Les demandes de connexions existantes sont données aux clients de haut-JSON-RPC serveur de golang?
Je veux contrôler cette structure qui appelle les méthodes RPC, mais ce n'est pas dans mon code. Par exemple, j'ai une action RPC 'User.Get'. J'ai une fonction nommée 'Get' que je contrôle. Comment puis-je contrôler le code qui démarre cette fonction "Get"? Dois-je modifier le serveur RPC de Google ou y a-t-il un moyen plus efficace?
Peut-être, il y a une variable dans le serveur RPC qui contient le nombre de demandes actives en cours de traitement?
Je vois un NumCalls()
et numCalls
dans le methodType
dans https://golang.org/src/net/rpc/server.go
. Le problème est que ce champ n'est pas public ... En outre, le .../rpc/server.go
utilise sync.Map
qui ne compile pas. Ma version de Golang est trop vieille? :)
Il semble que pour l'instant le moyen le plus simple est de manipuler un compteur global de toutes les fonctions d'action RPC. :-) Si vous connaissez une meilleure solution, s'il vous plaît, dites-moi. Merci. :-)