[email protected] wrote:
> On 10:37 am, [email protected] wrote:
>>
>> I'd like to run several queries in background, some of them may fail.
>>
>
> If you have a function along the lines of this one:
>
> def someInteractions(db):
> interactions = [
> db.runInteraction(one),
> db.runInteraction(two),
> db.runInteraction(three)]
>
> Then a failure in one shouldn't affect two or three; likewise for any
> other failure or combination of failures. They are naturally (ugh, not
> a good word, but I can't think of a better one) independent. You have
> to go out of your way to associate them somehow.
>
I think he might mean he wants them to run sequentially, even if one fails.
You can do that explicitly via @inlineCallbacks like this:
@inlineCallbacks
def someInteractions(db):
try:
yield db.runInteraction(one)
except:
pass
try:
yield db.runInteraction(two)
except:
pass
try:
yield db.runInteraction(three)
except:
pass
Or with callback/errbacks, like this:
def someInteractions(db)
d = db.runInteraction(one).addBoth(db.runInteraction,
two).addBoth(db.runInteraction, three)
addBoth is a convenience method that adds the same function as a
callback and an errback:
http://twistedmatrix.com/documents/8.2.0/api/twisted.internet.defer.Deferred.html#addBoth
--
Mark Visser, Software Director
Lumière VFX
Email: [email protected]
Phone: +1-514-316-1080 x3030
_______________________________________________
Twisted-Python mailing list
[email protected]
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python