Как не расстрелять свои ноги с Django, транзакциями и исключениями

preview_player
Показать описание


Как не хапнуть проблем с Django, транзакциями и исключениями? Рассказываю, как не повторять наших ошибок:)

0:00 Почему с этим надо разобраться
0:56 Что такое транзакции
1:52 Поднимаем демо проект с Django
3:10 Создание Django модели в проекте
4:03 Создание Django view для изучения проблемы
5:47 Пара бизнес-сервисов
7:39 Пример без транзакции
9:01 Три варианта транзакций в Django
12:49 Проблема, тадаааамс!
18:33 Чего мы хотим?
19:23 Пишем Django Middleware
22:32 Преимущества и самое важное

/****************** about ******************/

Меня зовут Алексей Голобурдин, я программирую с 2004 года и на этом канале делюсь своим опытом. Я основатель и руководитель компаний:

Рекомендации по теме
Комментарии
Автор

Благодарю за видео! Сама идея заворачивать весь view в транзакцию очень плохая, так как там может быть не только работа с базой, но ещё какие-то шаги.
Например, rest-запрос на какой-то сервис (возможные проблемы с сетью или нагруженностью третьего сервиса, долгий ответ).
И пока эти этапы будут производиться у вас будет висеть открытая транзакция в базе, что очень плохо скажется на производительности.

Но, если вы обернете в транзакцию лишь сервисный слой, который работает сугубо с базой, у вас транзакция откроется только в момент работы с базой и закроется в нужный момент. Плюс во view вы сможете поймать исключение которое было сброшено в сервисном слое, ибо оно уже откатило транзакцию

rest-of-the-world
Автор

Спасибо! Накидываю темы, которые было бы круто послушать в твоей интерпретации:
1. Сигналы. Как их использовать, когда полезны.
2. Работа с ORM и с raw queries. Когда что использовать, какие-то фишки со сложными запросами.
3. Работа с сессиями
4. Работа с auth. Создание кастомного юзера, токены, свои менеджеры для него.

MrLotrus
Автор

Вот это было полезно, прям по работе.
Огромное спасибо за вашу работу!

jvpt
Автор

Так и знал, что будет топовый видос!)

пашашевелёв-дм
Автор

Никогда и ни за что не отдам консистентность данных каким то левым миддл-чувакам! Спасибо за видео, плотность информации на единицу времени поражает.

pavelbotovkov
Автор

При работе с транзакциями также полезно использовать метод on_commit. Позволяет совершить действия после того, как транзакция закоммитилась и объект действительно записался в бд. Ну и по мне все-таки обрабатывать транзакции явно в коде, а не передавать глобально в настройки

andreikoptev
Автор

Чувак, у тебя очень крутой канал. Смотрю тебя уже больше года, очень интересный материал и отличная подача.

bezborodovanton
Автор

Хоть и не связывался с транзакциями, но видос – топ! Побольше такого контента. Спасибо тебе!

temik
Автор

Это единственный из каналов, на которые я подписан, на котором ни одного выпуска не пропускаю. И у которого рейтинг роликов 15% - это вообще как так? Обычно если 5% значит годно, 10% - топчик, а тут 15%? Космический канал с космическим автором. Надеюсь на долго и счастливо ) продолжайте пожалуйста

AlexeyFyodorov
Автор

Мне как для новичка эта инфа является неоценима полезной. Thx

exemplles
Автор

Спасибо мужик! Очень достойное видео. Для себя подчерпнул много полезного!

nikolay
Автор

2:03 не поиметь проблем, а что-бы проблемы не поимели. Видос топ.

marlo
Автор

И мастер-класс по Виму - бесконечно можно повторять 😎😎😎

ilyachudakov
Автор

Вы лучший, на данный момоент я начинающий программист, ваши ролики макимально полезны, они реально поднимают уровень))))

ncd
Автор

Полезно. Как раз велосипедил это на своём проекте.

Geolimber
Автор

пока "Не мой уровень дорогой")) но когда нибудь точно пригодится. спасибо!

damizi
Автор

Очень круто!
Ждём больше таких историй!

ilyachudakov
Автор

Как по мне более простым решением будет обернуть в блок try except контекстный менеджер с выполнением всех необходимых запросов. Я проверял и вроде как работает абсолютно идентично тому, что показанно в видео.

NoName-lujf
Автор

Многим огромное кол-во нервов сохранил!)

toomanof
Автор

очень доступно добрый ты человек :) в плане основной темы о транзакциях ! но перебор когда файл урлов инклюднул ссыль с другого файла урлов в другом подкаталоге - если я правильно понял. ибо мне это напомнило как заумные ООП-щики сделали простую прогу на 40 классов и сами потеряли нить в своей писанине)) потом мой друг переписал их творение в 2 класса по 10 строчек и она заработала - он просто свёл их классы. я то понимаю чем больше каскадов тем сильнее абстрагирование - но как бы рекурсии не вышло при 40 классах между 12-м классом и 27-м :)

pashadjoystick