FastAPI-Production-Boilerplate
FastAPI-Production-Boilerplate copied to clipboard
Question: What is the difference between the two Propagation types?
In the @Transactional annotation, the code supports two Propagation types: REQUIRED and REQUIRED_NEW. The only difference appears to be that REQUIRED_NEW starts a session, whereas REQUIRED assumes one is already started. The commit log / documentation did not help me understand which one I should use, under what circumstances. Can you help?
Thanks!
hey @pjohnmeyer
When you create an AsyncSession object, it automatically begins a transaction. This means that any database operations performed within the session will be executed as part of a single, atomic unit.
However if you don't want the transaction to be executed in the same transaction context you can use REQUIRED_NEW.
e.g.
Suppose your transaction invokes multiple transactions and you don't want the complete transaction to roll back even if some of the transaction fails. In such case you can use REQUIRED_NEW for those low priority transaction.