Django 多处理数据库并发

Rib*_*bas 2 python django postgresql multiprocessing

我遇到了以下数据库并发问题。

我正在使用 psycopg2 构建 django web 应用程序来与 PostgreSQL 数据库进行通信。查询从不同的进程运行。

为了锁定行,所有查询都位于事务原子块内。

   with transaction.atomic():
       self.analysis_obj = Analysis.objects.select_for_update().get(pk=self.analysis_id)
Run Code Online (Sandbox Code Playgroud)

但是有时我会遇到随机错误,例如:

  • '没有可获取的结果',
  • '从空列表中弹出',
  • “错误,状态为 PGRES_TUPLES_OK,并且 libpq 没有消息”。

有办法解决这个问题吗?

非常感谢。

Rib*_*bas 6

对于感兴趣的人,我找到了解决方案。

在 Python 中使用多处理时,您应该在每次生成进程时关闭所有连接。

from django.db import connection
connection.close()
Run Code Online (Sandbox Code Playgroud)