[Python-es] AsyncXMLRPCServer

Oswaldo Hernández listas en soft-com.es
Lun Abr 7 16:38:34 CEST 2008


Oswaldo Hernández escribió:
> Hola,
> 
> Estoy intentando montar un servidor que atienda peticiones de varios 
> clientes utilizando RPC.
> 
> SimpleXMLRPcServer no me vale porque no atiende a mas de una conexión 
> simultáneamente.
> 
> He probado AsyncXMLRPCServer
> <http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/425043>
> pero cuando se realizan dos peticiones simultáneas al mismo metodo 
> parece que se se mezclan los datos, aunque no estoy seguro porque en las 
> pruebas no siempre lo hace.
> 

Despues de investigar este fin de semana, creo que he localizado el problema.
Aunque se ejecuten las llamadas en threads diferentes el modulo SimpleXMLRPCDispatcher utiliza 
siempre la misma instancia de clase que publica los metodos, por lo que si hay dos llamadas 
simultáneas al mismo metodo se cruzan los datos que maneja el metodo.

He sobrescrito el metodo _dispatch() haciendo que se instancie una nueva clase en cada llamada y el 
problema se ha solucionado (voy a tocar madera por si acaso ;) )

Saludos.

-- 
*****************************************
Oswaldo Hernández
oswaldo (@) soft-com (.) es
*****************************************
PD:
Antes de imprimir este mensaje, asegúrese de que es necesario.
El medio ambiente está en nuestra mano.


Más información sobre la lista de distribución Python-es