Django ORM与多线程处理

1 投票
1 回答
1348 浏览
提问于 2025-04-15 21:59

我在我的Python脚本中使用Django的ORM(对象关系映射),但不是在一个普通的Django项目中运行,而是以一种解耦的方式使用。

我还在使用多进程模块,不同的进程会发出查询请求。

这个进程成功运行了一个小时,然后出现了这个消息:

“IOError: [Errno 32] Broken pipe”

经过进一步的诊断和调试,我发现这个错误在我调用模型实例的save()方法时出现。

我在想:

Django的ORM在处理保存操作时会出问题吗?

那这个错误还有什么其他原因呢?

谢谢,

安库尔

我找到了答案:我在启动进程后调用了一个返回,这个错误是因为我在复制粘贴一个函数时出现的小失误。

1 个回答

0

没有更多的信息,很难准确判断问题,但很可能是因为在你创建新进程的时候,数据库连接还保持着打开状态,然后你又试图在这些新进程中使用这个数据库连接。不要在你创建的多进程工作中重复使用父进程的数据库连接;每次都应该重新建立数据库连接。

撰写回答