[Python] xml-rpc a miltiprocess

Matteo Boscolo matteo.boscolo a boscolini.eu
Gio 30 Ago 2012 21:25:54 CEST


Il 30/08/2012 20:58, Manlio Perillo ha scritto:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Il 30/08/2012 20:15, Matteo Boscolo ha scritto:
>>   Ciao A tutti
>> ho una classe fatta cosi...
>>
>> class Application(object):
>>      ...
>>      ...
>>      def computeIntegration(self,nodeEngineName):
>>          """
>>               compute the bom solved to the editor
>>          """
>>          try:
>>              if not nodeEngineName in self._nodesEngines:
>>                  raise ValueNot('Node engine not loaded')
>>             
>> nodeTree=self._nodesEngines[nodeEngineName].getNodeRelationTree()
>>              integrationServer =
>> xmlrpclib.ServerProxy("http://127.0.0.1:8500" )
>>              return integrationServer.*makeConfiguration*(nodeTree)
>>          except Exception ,ex:
>>              print_exc_plus()
>>              raise ex
>>
>> e fin qui tutto ok ...
>>
>> la computeIntegration viene chiamata da un server SimpleXMLRPCServer e
>> viene eseguita correttamente.
>>
>> quello che vorrei ottenere e che alla chiamata xml-rpc la funzione venga
>> eseguita tutta senza aspettare l'esecuzione del metodo
>> *makeConfiguration* che impiega molto tempo
> Quello che vuoi non è possibile.
>
> Se la funzione computeIntegration *deve* restituire il valore restituito
> dalla funzione makeConfiguration, allora ovviamente tale funzione deve
> essere eseguita prima che computeIntegration termini.
>
>> ho provato a sostituire il codice sopra con questo qui sotto commentato,
>> ma il metodo *makeConfiguration* viene eseguito e poi sembra che il
>> processo si interrompa.
>>
>> #        nodeTree=self._nodesEngines[nodeEngineName].getNodeRelationTree()
>> #        p=Process(target=startProcess, args=(nodeTree,))
>> #        p.start()
>> #        logging.info("Configuration in process !! ")
>> #        return "Configuration in Process.."
>>
>> #def startProcess(nodeTree):
>> #    integrationServer = xmlrpclib.ServerProxy("http://127.0.0.1:8500" )
>> #   integrationServer.makeConfiguration(nodeTree)
>>
>> qualche idea ??
>>
> Non ho capito quello che stai facendo.

in pratica ci sono due server xml-rpc
uno che risolve una struttura a nodi (A)
e uno che legge questa struttura apre dei file 3d e ci fa del lavoro 
sopra (B)

i due server parlano fra di loro e naturalmente il tempo computazionale 
del primo (A) e piu' veloce del secondo (B)

quello che sto cercando di fare computare tutti i node tree e lasciare 
che la giometria 3d vada per la sua strada ..

in piu' mentre faccio della computazione qualche client collegato al 
server (A) potrebbe dire  che c'e' da risolvere qualche altro nodetree ..


> Il metodo startProcess da chi viene chiamato?
da Process
> Che implementazione di xmlrpc stai utilizzando?
SimpleXMLRPCServer
>
> Ciao  Manlio
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.10 (GNU/Linux)
> Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
>
> iEYEARECAAYFAlA/t9IACgkQscQJ24LbaUTznwCgjY36LpqLcmZz851k+O3Dkt67
> 8OcAmwQHkBgdJBDDqeYLsHuoraWwmWIF
> =ff1a
> -----END PGP SIGNATURE-----
> _______________________________________________
> Python mailing list
> Python a lists.python.it
> http://lists.python.it/mailman/listinfo/python
>



Maggiori informazioni sulla lista Python