2015-05-06 3 views
0

Какой самый простой способ моделирования «блокировки таймаута» DatabaseError с помощью Django с использованием бэкэнда MySQL?Как имитировать ошибку «блокировки таймаута» с помощью Django в MySQL

У меня есть кусок кода, который работает на больших querysets, а иногда он бросает исключение:

DatabaseError: (1205, 'Lock wait timeout exceeded; try restarting transaction') 

Я понимаю, что причины этого и как это исправить, но я не знаю, как проверить мое исправление, поскольку ошибка происходит только в производственной среде, где несколько пользователей одновременно обращаются к некоторым таблицам.

Вначале я попытался запустить some sample code в отдельном процессе, чтобы Django применял блокировку в MySQL, и хотя он, похоже, блокирует целевую таблицу и заставляет все остальные запросы ждать, тайм-аут блокировки никогда не возникает, когда я тестирую на своем localhost с сервером-сервером. Я позволяю ему работать в течение 20 минут без тайм-аута.

ответ

0

Если вам нужно только исключение определенного типа, почему бы не издеваться/обезопасить свой код в тесте, чтобы выбросить это исключение, а не извлечения из базы данных?

Смежные вопросы