Mécanisme d'expiration dans les appels de procédure à distance (RPC)
RPC est un mécanisme permettant d'effectuer des appels de procédure à distance sur un réseau sans avoir à connaître le détails sous-jacents du réseau ou du système hôte. Un aspect important de RPC est la possibilité d’interrompre les appels qui prennent trop de temps à se terminer. Si un appel RPC ne dispose pas d'un mécanisme de délai d'attente, cela peut entraîner des blocages et une pénurie de ressources.
Comment mettre fin à un appel RPC sans fin
Si un appel RPC le fait n'a pas de mécanisme de délai d'attente intégré et que le serveur qu'il essaie d'appeler est fermé, vous pouvez implémenter un modèle de délai d'attente à l'aide de canaux.
Voici un exemple d'extrait de code utilisant ce modèle :
<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>
L'instruction select se bloquera jusqu'à ce que le client.Call revient ou le délai d'attente spécifié s'écoule. Si le délai d'attente se produit, vous pouvez supposer que l'appel a expiré et prendre les mesures appropriées.
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!