class CachedQueryMutator(object): def __init__(self): self.mutator = Mutator(CONNECTION_POOL) self.to_prune = set() def __enter__(self): self.mutator.__enter__() return self def __exit__(self, type, value, traceback): self.mutator.__exit__(type, value, traceback) if self.to_prune: CachedQuery._prune_multi(self.to_prune) def insert(self, query, things): if not things: return query._insert(self.mutator, things) if (random.random() / len(things)) < PRUNE_CHANCE: self.to_prune.add(query) def delete(self, query, things): if not things: return query._delete(self.mutator, things)