django如何确保一个持久性连接不会同时被多线程共享?

时间:2018-07-12 02:43:59

标签: django persistent-connection

  • 来自django db doc ,当使用持久连接(设置CONN_MAX_AGE> 0或无)时,每次请求超过最大使用期限或不再使用时,它都不会关闭。
  • 这就是说,以下请求将使用之前创建的相同持久连接,这可能会导致一个持久连接同时被多线程共享。但是这种情况不应该发生!我只是感到困惑,我相信Django开发人员不会犯这么小的错误。还是我想念什么?

    预先感谢!

1 个答案:

答案 0 :(得分:0)

好吧,在搜索并阅读了django源代码之后,我确实遗漏了一些要点!避免在线程之间共享一个持久性数据库连接的“窍门” django在实例化时在ConnectionHandler(path:django / db / utils.py)中使用threading.local()。

通过这种方式,每个线程都维护自己的持久连接。多么聪明! 而且我也画流程图: django db connetion processing

希望能帮助别人!