[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