May 26, 2018
Django database backends to register transaction-commit hooks
A better alternative to the native transaction signals of Django.
Sometimes you need to fire off an action related to the current database transaction, but only if the transaction successfully commits. Examples a Celery task, an email notification, or a cache invalidation.
Doing this correctly while accounting for savepoints that might be individually rolled back, closed/dropped connections, and idiosyncrasies of various databases, is non-trivial. Transaction signals just make it easier to do it wrong.
django-transaction-hooks does the heavy lifting so you don’t have to.