Django параллелизм многопроцессорной базы данных - PullRequest
1 голос
/ 21 октября 2019

Я столкнулся со следующей проблемой параллелизма в базе данных.

Я создаю веб-приложение django, используя psycopg2 для связи с базой данных PostgreSQL. Запросы выполняются из разных процессов.

Для блокировки строк все запросы находятся внутри атомарного блока транзакции.

   with transaction.atomic():
       self.analysis_obj = Analysis.objects.select_for_update().get(pk=self.analysis_id)

Однако иногда я получаю случайную ошибку, такую ​​как:

  • 'нет результатов для извлечения',
  • 'выскочить из пустого списка',
  • 'ошибка с состоянием PGRES_TUPLES_OK и без сообщения от libpq'.

Есть идеи по поводу этой проблемы?

Большое спасибо.

1 Ответ

0 голосов
/ 05 ноября 2019

Для тех, кто заинтересован, я нашел решение.

При использовании многопроцессорной обработки в Python вы должны закрывать все соединения каждый раз, когда возникает процесс.

from django.db import connection
connection.close()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...