[pyar] Como hago 'fire' de un deferred en twisted ?

Emiliano Dalla Verde Marcozzi edvm en airtrack.com.ar
Mar Ago 16 11:30:37 ART 2011


Buenas querida lista,
Estoy laburando con twisted y no me cierra como hacer el 'fire' de un
Deferred,
a continuacion, un cacho de codigo:

 class SyncTimeClient(NetstringReceiver):

 def connectionMade(self):

 deferred = Deferred()

deferred.addCallbacks(self.syncTime, self.errorHandler)

deferred.addCallbacks(self.sendString, self.errorHandler)

deferred.callback()


Resulta, que esto revienta con el siguiente traceback:


2011-08-16 11:20:16-0300 [-] Unhandled Error
Traceback (most recent call last):
File "./bin/callprocesor", line 70, in <module>
srv.cp.main.run()
File "/home/emiliano/Workspace/buildouts/srvcp/src/srv.cp/srv/cp/main.py",
line 197, in run
reactor.run()
File "/usr/lib/python2.7/dist-packages/twisted/internet/base.py", line 1158,
in run
self.mainLoop()
File "/usr/lib/python2.7/dist-packages/twisted/internet/base.py", line 1167,
in mainLoop
self.runUntilCurrent()
--- <exception caught here> ---
File "/usr/lib/python2.7/dist-packages/twisted/internet/base.py", line 789,
in runUntilCurrent
call.func(*call.args, **call.kw)
exceptions.TypeError: callback() takes exactly 2 arguments (1 given)

Ahora, yo no quiero pasarle ningun parametro a la funcion self.syncTime, de
ahi que llamo a
deferred.callback(), pero como esta definida la funcion en
twisted.internet.base.py line 789
me obliga a hacerlo (como se ve en el traceback):

call.func(*call.args, **call.kw)

Yo crei que los pasos eran:
1- Crear el deferred
2- AddCallBackeale funciones y sus respectivos Errbacks, sino puede que una
funcion falle y
tu funcion 'llamante' se quede esperando eternamente y yo no me entere
3- hecho y definido todo el chain, 'prender' la mecha con
deferred.callback() y esperar que todo
explote :-P
Pero bueno, esto de que sea obligatorio pasarle argumentos al metodo
callback del deferred
me desconcierta, como es la onda ?
Desde ya, muchas gracias :)

-- 
*Emiliano Dalla Verde Marcozzi*
Encargado de IT y Python Ninja Developer



San Juan 4879
Rosario. Argentina
Tel. (+54) 341 437 6878
www.airtrack.com.ar

“Si quieres calentar una roca siéntate encima de ella 100 años”.

- proyectos: https://bitbucket.org/edvm
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20110816/94e95526/attachment.html>


More information about the pyar mailing list