Maison > Article > développement back-end > Comment implémenter des délais d'attente dans les appels RPC sans support natif ?
Gestion des délais d'attente dans les appels RPC
L'appel de procédure à distance (RPC) est un mécanisme qui permet aux programmes d'invoquer des procédures ou des fonctions sur des machines distantes. Cependant, il est crucial que les systèmes RPC disposent d'un mécanisme fiable pour gérer les scénarios dans lesquels l'appel à distance prend un temps inattendu ou échoue.
Mécanisme de délai d'attente dans RPC
Est-ce que RPC a-t-il un mécanisme de délai d'attente intégré ? La réponse est non. RPC s'appuie sur des protocoles réseau et des systèmes d'exploitation sous-jacents pour gérer les délais d'attente. L'implémentation spécifique varie en fonction du framework RPC utilisé et de la plate-forme sur laquelle il s'exécute.
Implémentation de délais d'attente avec des canaux
En l'absence d'un mécanisme de délai d'attente RPC natif, vous pouvez implémenter un modèle de délai d'attente à l'aide de canaux. Voici un exemple utilisant le package golang.org/x/net/rpc :
<code class="go">import "time" c := make(chan error, 1) go func() { c <- client.Call("Service", args, &result) }() select { case err := <-c: // Use 'err' and 'result' case <-time.After(timeoutNanoseconds): // Call timed out }</code>
Dans cet exemple, une goroutine est créée pour effectuer l'appel RPC pendant que la goroutine principale attend sur un canal (c). Si l'appel RPC revient avant l'expiration du délai d'attente, le résultat est stocké dans le canal. Sinon, l'instruction select passe au cas timeoutNanoseconds, indiquant que l'appel a expiré.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!