Je cherche un moyen d'empêcher plusieurs hôtes d'émettre des commandes simultanées à un écouteur Python XMLRPC. L'écouteur est responsable de l'exécution de scripts pour effectuer des tâches sur ce système qui échoueraient si plusieurs utilisateurs tentaient d'exécuter ces commandes en même temps. Est-il possible de bloquer toutes les demandes entrantes jusqu'à ce que l'instance unique soit terminée?Python XMLRPC avec demandes simultanées
Répondre
Je pense que le module python SimpleXMLRPCServer est ce que vous voulez. Je crois que le comportement par défaut de ce modèle bloque les nouvelles demandes lorsque la demande actuelle est en cours de traitement. Le comportement par défaut m'a donné beaucoup de problèmes et j'ai changé ce comportement en mixant dans la classe ThreadingMixIn afin que mon serveur xmlrpc puisse répondre à plusieurs requêtes en même temps. Si je comprends bien votre question, SimpleXMLRPCServer est la solution. Utilisez-le directement.
+1, c'est parfait! –
Pouvez-vous avoir un autre canal de communication? Si oui, avoir un protocole "rappelez-moi quand c'est mon tour" qui court entre le serveur et les clients. En d'autres termes, chaque client enregistrerait son intention d'émettre des demandes au serveur et ledit serveur "rappellerait" le client suivant quand il est prêt.
Je ne suis pas nécessairement aussi préoccupé par le rappel des clients, plus dans la prévention des commandes en conflit étant émis par plusieurs hôtes – MattB
pouvez-vous renvoyer un code HTTP 5xx (serveur occupé ou autre)? – jldupont
Qu'est-ce qui définit les "commandes conflictuelles"? – jldupont
Il y a plusieurs choix:
- Utiliser un serveur unique processus unique thread comme
SimpleXMLRPCServer
pour traiter les demandes par la suite. - Utilisez
threading.Lock()
dans un serveur à thread. - Vous avez un mécanisme de verrouillage externe (comme
lockfile
module ouGET_LOCK()
fonction dans mysql) dans le serveur multiprocessus.
- 1. Limite de demandes simultanées IIS
- 2. monorails de château pas de demandes simultanées du même utilisateur
- 3. Les demandes simultanées à un gestionnaire HTTP ne fonctionnent pas
- 4. Plusieurs connexions réseau simultanées - Serveur Telnet, Python
- 5. détecter deux touches simultanées dans pyglet (python)
- 6. Java XmlRPC Authentication
- 7. Comment authentifier XMLRPC :: Client
- 8. iis7 augmenter le nombre de threads/demandes simultanées par processus de travail
- 9. comment utiliser XMLRPC en C#
- 10. Gérer plusieurs demandes avec ICallbackEventHandler
- 11. Intégration de services XMLRPC/Web avec des données de base
- 12. Comment conserver l'état entre les demandes dans AppEngine (Python)?
- 13. Connexions simultanées Google
- 14. problème de requêtes simultanées dans MySQL
- 15. bibliothèque côté serveur (c/C++) xmlrpc
- 16. xmlrpc vs json/reste sur java google appengine avec client android
- 17. Mise à jour de l'interface utilisateur avec plusieurs opérations simultanées
- 18. Crystal Reports 8.5 Licences simultanées Problème avec vb6
- 19. Multiprocesseur Python avec le réacteur twisted
- 20. Ordonnateur REST Demandes
- 21. Connexions simultanées dans une ferme Web
- 22. Comment faire face à l'authentification/sessions OpenX XMLRPC
- 23. Maintenir des connexions simultanées dans HTTP?
- 24. Traitement des demandes FastCGI
- 25. Demandes limite par heure
- 26. Prioriser les demandes ASP.NET
- 27. Comment faire un wiredump de XMLRPC :: Client dans ruby?
- 28. demandes Async à des modèles liés méthodes d'action avec JQuery
- 29. Filtrage des demandes/réécriture d'URL avec IIS7 - ne fonctionne pas
- 30. Insertion et extension simultanées d'une liste?
sont les clients au courant de la matrice de conflit? devraient-ils être assez intelligents pour se programmer selon cette matrice? comment est-ce que les activités sont synchronisées etc ... – jldupont
utilisez-vous SimpleXMLRPCServer comme je pensais que c'était un seul thread ... – SeriousCallersOnly
J'utilise le SimpleXMLRPCServer, mais il semble que je peux lancer la même commande à partir de différents hôtes simultanément, ce qui est ce que je besoin d'empêcher – MattB