In the case of the create_transaction and state transitions, these might need to be committed prior to the end of the request.  In particular, in create_transaction, the DataSourceTransaction object needs to be committed and available in the database before the transaction run can be scheduled.  Otherwise, it just spins.  Similarly with state transitions, more than one might occur in the scope of a celery run, and these status transitions need to be available to be accurately reflected in the status update endpoint while a request is still running.

As for the one you marked in the save method, that might not be necessary anymore.  That might just be a vestige of when creating a data source automatically created a DSTransaction.