1. Создаётся событие/сообщение, что пользователь хочет вот это, мы сразу ему помечаем ордер как закрытый или переводим в какой-то промежуточный статус.
Тогда надо ещё подумать над архитектурой кода.
И только для быстрого изменения/создания запускайте транзакцию в Serialization и как можно скорее ее закрывайте.
Готовьте заранее все данные, что нужны для сохрания в read commited изоляции.
Можешь чуть подробнее, как задеваются другие таблицы? Без этого сложно дать полезный совет.
@router.post(WEBHOOK_PATH)
async def webhook_handler(request: Request):
bot = request.app.state.bot
dispatcher = request.app.state.dp
webhook_requests_handler = SimpleRequestHandler(dispatcher=dispatcher, bot=bot)
return await webhook_requests_handler.handle(request)