Django Как справиться с блокировкой базы данных
У меня есть две функции, periodic_signals()
и update_choice()
, и я использую postgres
.
update_choice()
вызывается, как только пользователи делают новый выбор и обновляют базу данных.
periodic_signals()
вызывается каждые 0,1 с с помощью Threading.timer
и считывает выбор пользователей из базы данных, выполняет некоторые действия, затем отправляет сигналы обратно пользователям и отображает их в режиме реального времени.
Когда periodic_signals()
вызывается каждые 1 секунду, у меня не возникает никаких проблем. Когда periodic_signals()
вызывается каждые 0,1, все, что я вызываю update_choice()
, в моем графике приостанавливается, и я вижу, что время выполнения update_choice()
увеличивается в 10 раз.
Это потому, что я читаю и записываю в одну и ту же строку почти одновременно, что приводит к блокировке базы данных? Как я могу это решить, кроме как улучшить производительность этих двух функций (на данный момент обе функции занимают около 0,005-0,02 секунды в зависимости от количества пользователей)?