J'utilise twisted pour implémenter un client et un serveur. J'ai configuré RPC entre le client et le serveur. Donc, sur le client, je fais protocol.REQUEST_UPDATE_STATS(stats)
, ce qui se traduit par l'envoi d'un message avec transport.write
sur le transport du client qui est une version codée de ["update_stats", stats]
. Lorsque le serveur reçoit ce message, la fonction dataReceived
sur le protocole du serveur est appelée, il le décode et appelle une fonction basée sur le message, comme CMD_UPDATE_STATS(stats)
dans ce cas.Les RPC torsadés sont-ils garantis dans l'ordre?
Si, sur le client, je fais quelque chose comme:
protocol.REQUEST_UPDATE_STATS("stats1")
protocol.REQUEST_UPDATE_STATS("stats2")
... suis-je assuré que le message "stats1"
arrive avant que le message "stats2"
sur le serveur?
MISE À JOUR: Edité pour plus de clarté. Mais maintenant la réponse semble évidente - pas question.
Qu'est-ce qu'un "RPC"? Voulez-vous dire un message réseau? Utilisez-vous des sockets TCP ou UDP? Est-ce que les différents messages passent par le même socket, ou différents? Votre protocole permet-il des réponses asynchrones? Y a-t-il un logiciel intermédiaire qui pourrait réorganiser les demandes? Vous devrez être beaucoup plus spécifique si vous voulez une réponse correcte au lieu d'une simple supposition qui peut ne pas s'appliquer dans votre situation. – Glyph