Sto cercando un modo per impedire a più host di inviare comandi simultanei a un listener XMLRPC Python. L'ascoltatore è responsabile dell'esecuzione di script per eseguire attività su quel sistema che fallirebbero se più utenti tentassero di emettere questi comandi contemporaneamente. C'è un modo per bloccare tutte le richieste in arrivo fino al completamento della singola istanza?Python XMLRPC con richieste simultanee
risposta
Penso che il modulo Python SimpleXMLRPCServer sia quello che vuoi. Credo che il comportamento predefinito di quel modello stia bloccando nuove richieste quando la richiesta corrente è in fase di elaborazione. Il comportamento predefinito mi ha dato un sacco di problemi e ho modificato questo comportamento mescolando la classe ThreadingMixIn in modo che il mio server xmlrpc potesse rispondere a più richieste nello stesso tempo.
class RPCThreading(SocketServer.ThreadingMixIn, SimpleXMLRPCServer.SimpleXMLRPCServer):
pass
Se ho compreso correttamente la tua domanda, SimpleXMLRPCServer è la soluzione. Basta usarlo direttamente.
+1, è perfetto! –
Si può avere un altro canale di comunicazione? In caso affermativo, avere un protocollo "richiamami quando è il mio turno" tra il server e i client.
In altre parole, ogni client registrava l'intenzione di inviare richieste al server e il server avrebbe "richiamato" il client successivo quando è pronto.
ci sono diverse scelte: Server
- uso singola-processo-single-thread come
SimpleXMLRPCServer
per elaborare le richieste in seguito. - Utilizzare
threading.Lock()
nel server thread. - Si dispone di un meccanismo di blocco esterno (come il modulo
lockfile
o la funzioneGET_LOCK()
in mysql) nel server multiprocesso.
- 1. server http python, più richieste simultanee
- 2. Richieste simultanee CasperJS
- 3. Richieste simultanee allo script PHP
- 4. Applicazione lucida instabile a molte richieste simultanee
- 5. Benchmarking ASP.NET richieste simultanee risultati poveri
- 6. jQuery: effettuare richieste ajax simultanee, è possibile?
- 7. gunicorn non elabora simultaneamente richieste simultanee
- 8. ASP.NET (MVC) Outputcache e richieste simultanee
- 9. Risposta alle richieste simultanee con Flask e eventlet
- 10. Node.js server con più richieste simultanee, come funziona?
- 11. Python Richieste problema con SSL
- 12. C++ Library per XMLRPC
- 13. Quante richieste simultanee riceve un singolo processo Flask?
- 14. jQuery Limita il numero di richieste AJAX simultanee
- 15. Due richieste simultanee AJAX non verranno eseguite in parallelo
- 16. Problema di concorrenza PHP, più richieste simultanee; mutex?
- 17. Come fa andare gestire richieste simultanee su Google App Engine
- 18. Come si usa cURL per eseguire più richieste simultanee?
- 19. Servlet sembra gestire simultaneamente più richieste di browser simultanee
- 20. Test richieste simultanee a un server Web basato su REST
- 21. Esiste un limite di richieste HTTP simultanee per Silverlight?
- 22. Banco Apache: media vs media su tutte le richieste simultanee
- 23. Python xmlrpc estremamente lento: un secondo per chiamata
- 24. Java di Apache XMLRPC biblioteca
- 25. come utilizzare XMLRPC in C#
- 26. Errore proxy Python con libreria richieste
- 27. Proxy con il modulo 'Richieste' di Python
- 28. Passaggio di csrftoken con python Richieste
- 29. elaborazione simultanea/richieste asincrone con Python BaseHTTPServer
- 30. Client HTTP Python con pipelining di richieste
i client sono a conoscenza della matrice dei conflitti? dovrebbero essere abbastanza intelligenti da programmarsi secondo questa matrice? come si sincronizzano le attività ecc ... – jldupont
stai usando SimpleXMLRPCServer perché pensavo che fosse single threaded ... – SeriousCallersOnly
Sto usando SimpleXMLRPCServer, ma sembra che possa lanciare lo stesso comando da host diversi contemporaneamente, che è quello che io È necessario prevenire – MattB