
Selon Stéphane Brault <stephane_brault@yahoo.fr>:
Hi, I have to call a web service then process the answer, according to the answer I may have to call the service again. The traditional way to go would be : condition = 1 while condition: message = callWebService() condition = processMessage(message)
Here is what I do : def function():
def myCalback(message): condition = processMessage(message) if condition: deferred = callWebService() deferred.addCallback(myCallback)
deferred = callWebService() deferred.addCallback(myCallback)
I was wondering if it was the way to go or if there was a better way, since I'm not quite sure about the impact of calling new deffered within a callback.
You may have a recursion problem with this kind of code (I'm not quite sure when it happens but it does). One good way is to use deferredGenerator: # Not tested def function(): condition = True while condition: wfd = defer.waitForDeferred(callWebService()) yield wfd condition = wfd.getResult() function = defer.deferredGenerator(function) -- Thomas