[Python] Domanda su twisted ed i deferred

aleuser aleuser a inwind.it
Sab 23 Feb 2008 09:43:40 CET


Valentino Volonghi wrote:
> Tutte le callback hanno SEMPRE come argomento il valore
> ritornato dalla callback precedente.
>
> La lambda non e` quindi necessaria.
>   
Beh, si, lo sapevo e credo di averlo dimostrato nel codice.
Forse mi ero spiegato male, parlavo di quando "la callback ha come 
argomento una deferred...", cioè al caso tipo:

@transact #decoratore che utilizza deferToThread
def tt(arg1, arg2, arg3):
  return

def funz(arg1):
  return

dd = ...
dd.addCallback...
dd.addCallback(tt)
dd.addCallback(funz)
...

In questo caso accade che "funz" ha come unico argomento una deferred, e 
cosa può fare per attendere che sia finita?

Quindi in genere io scrivo
...
dd.addCallback(lambda x: tt(x, arg2, arg3))
dd.addCallback(funz)
...

e "funz" viene chiamata esattamente alla fine della funzione "tt" e le 
viene passato correttamente l'argomento resituito (in questo caso None)

E' stato il caso più difficile che mi sono trovato davanti quando mi 
misi a studiare twisted; spero di aver risolto in modo ottimale

Alessandro


More information about the Python mailing list