Yes, I was expecting you to wrap item.obsolete() and renew(data) in try/except, as needed. If you want a clean but slightly slower way to do that, how about something like:def getCachedResult(cache, key): def release(result, item): item.release() return result def renew(data): return renew(data) def notFound(fail): fail.trap(NotFound) def readItem(item): return item.read() def checkObsolete(item): d = defer.maybeDeferred(item.obsolete) d.addCallback(lambda _: readItem(item)) d.addBoth(release, item) d.addCallback(renew) return d d = cache.open(key) d.addCallbacks(checkObsolete, notFound) return d
Thanks, maybeDeferred is what I missed :)
_______________________________________________ Twisted-Python mailing list [email protected] http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python
