почему django оставляет блокировки в mysql?

У меня есть приложение Django, которое использует MySQL и механизм InnoDB для устройства хранения данных. По некоторым причинам Django иногда уезжает, закрепляет, даже после того, как запрос завершился. (Я вижу их с Innotop).

Единственный обрабатывающий транзакцию материал, который я делаю в своем коде, - то, что у меня есть django.db.transaction.commit_on_success, указанный для части моего сохранения () методы, где я работаю с наследованием мультитаблицы.

Если я перезапускаю сервер Apache, блокировки уходят.

Кто-либо видел что-то вроде этого? Я, возможно, записал в некотором антишаблоне, который вызвал бы это?

8
задан Chris Curvey 21 June 2010 в 17:44
поделиться

1 ответ

Единственный раз, когда мне удалось это сделать, - это настройка «запланированных» задач в Django, которые не были связаны с запросами / представлениями. Система обработки транзакций с автоматической фиксацией по умолчанию фиксирует транзакции только тогда, когда пара запрос / ответ завершена и отправлена ​​обратно конечному пользователю, поэтому создание заданий в стиле кроны, которые выполняются без отправки запроса, обходит этот механизм.

В противном случае, как правило, довольно сложно заставить его не снять блокировку. Вы уверены, что не существует очень долго выполняющихся блоков кода (возможно, полагающихся на внешнюю службу, у которой истекает время ожидания или что-то в этом роде), связывающих вещи?

1
ответ дан 6 December 2019 в 02:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: