-------- Original Message  --------

From: Andrea Spadaccini <[EMAIL PROTECTED]>

Ciao a tutti,
  
Ciao

mi sono trovato ad utilizzare una libreria[1] che si basa su twisted, e non
conoscendo bene quest'ultimo mi trovo un po' in difficoltà.
  
Con twisted all'inizio è sempre così :-)

Io devo semplicemente richiamare tre volte il metodo getVariable, per prelevare
tre variabili differenti, utilizzare queste tre variabili per alcune operazioni
su DB ed infine richiamare N volte il metodo setVariable.
  

Non conosco gatherResult, può darsi che sia comunque utile al tuo caso.


Puoi comunque far così:

  ..

  def extract_result(res_list):

    #res_list = ((1 if ok or 0 on error, res_dd1), (1 if ok or 0 on error, res_dd2), .. )

    result = [x[1] for x in res_list]


 

  def accedi_al_db(results):

    def _(results):

      #qui fai ciò che vuoi sul database

      #per la trasact

      return valori

    return deferToThread(_, results)

    #oppure decori con @transact, vedi Stiq

    #operare in un altro thread è comodo perche il db è lento


  def set_vars(valori):

    return DeferredList([setVariable(var) for var in results])


  dvar1 =getVariable(..)

  dvar2 =getVariable(..)

  dvar2 =getVariable(..)

  dd = DeferredList([dvar1, dvar2, dvar3])

  dd.addCallback(extract_result)

  dd.addCallback(accedi_al_db)

  dd.addCallback(lambda x:set_vars(x))



la deferredlist la trovi qui

http://twistedmatrix.com/projects/core/documentation/howto/defer.html#auto7


Rigorosamente non testato.

In particolare la lambda all'ultima riga credo sia necessaria per poter fare gestire correttamente la deferred alla callback, cioè: la callback ha come argomento una deferred...


Scrivendo solo

...

dd.addCallback(set_vars)


credo che il risultato della deferred 'dd' sia difficilmente gestibile, anche se le variabili vengono correttamente settate



Qualcuno può darmi una mano?
Grazie in anticipo!
  
Spero di esserti stato d'aiuto
Anche io sono interessato a vedere del codice migliore del mio :-)

Ciao
Alessandro



_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python

Reply via email to