Django PostgreSQL多处理死锁

Django PostgreSQL多处理死锁,django,postgresql,django-models,multiprocessing,Django,Postgresql,Django Models,Multiprocessing,我正在运行一个Django应用程序,它计算并存储一个表在另一个表中的一组统计信息,同时保持两个表之间的M2M链接。为了生成stats表,我建立了一个多处理系统,该系统查询表1中的所有内容并将其加载到表2中。但是,当我同时在多个处理器上运行查询时,会出现死锁错误(即使启用自动提交) 我的统计表如下所示: class Stats(models.Model): score = models.IntegerField(...) objects_from_table_1 = models.

我正在运行一个Django应用程序,它计算并存储一个表在另一个表中的一组统计信息,同时保持两个表之间的M2M链接。为了生成stats表,我建立了一个多处理系统,该系统查询表1中的所有内容并将其加载到表2中。但是,当我同时在多个处理器上运行查询时,会出现死锁错误(即使启用自动提交)

我的统计表如下所示:

class Stats(models.Model):
    score = models.IntegerField(...)
    objects_from_table_1 = models.ManyToManyField('table_1', related_name='stats', ...)
我的解析代码如下所示(同时发生在许多单独的进程中,这些进程都有自己的数据库连接)

我在尝试保存对象时出现死锁错误。我相信现在发生的是一个锁,因为多个进程试图同时向同一个stat_obj添加一个table1_对象,这会造成死锁

是否有某种方法可以让系统等待锁自行解析或重新构造解析代码,以避免出现死锁


提前感谢。

在玩了一段时间之后,我们决定只保存stat_obj的输入,然后稍后运行stat_obj列表——这样,每个stat_obj在任何给定时间都只会被一个线程修改

for table1_object in table1_objects:
    for stat_obj in stat_objs:
        stat_obj.objects_from_table_1.add(table1_object)
        stat_obj.save()