Представьте, что в вашем веб-приложении есть модель User
, и вам необходимо синхронизировать этого пользователя с внешней службой через API. Таким образом, когда вы создаете пользователя локально, вам также необходимо создать его удаленно.
Все ваши операции выполняются в режиме transaction.atomic()
, и вы пытаетесь сохранить все ваши сторонние вызовы API после атомарного блока, что является разумным.
Но, поскольку система является системой, ее сложность возрастает до тех пор, пока вам действительно не удастся удалить сторонние вызовы в вызове обновления.
Тем не менее, есть ли способ расширить механизм транзакций Django, добавив некоторые функции обратного вызова, такие как rollback.add_callback(clean_3rdparty_user(user_id=134))
?
Таким образом, я могу гарантировать, что все необходимые действия по откату выполнены и моя система синхронизирована?