def add_measure(lat=0, lon=0, fail_counter=None, fails=10): try: if fail_counter: fail_counter[0] += 1 with add_measure.db_session() as session: measure = Measure(lat=lat, lon=lon) session.add(measure) if fail_counter: session.flush() measure2 = Measure(lat=0, lon=0) # provoke error via duplicate id measure2.id = measure.id if fail_counter[0] < fails: session.add(measure2) session.commit() except Exception as exc: raise add_measure.retry(exc=exc)