gpt4 book ai didi

python - 在 Python 中跨进程共享与 postgres 数据库的连接

转载 作者:行者123 更新时间:2023-11-28 21:18:43 26 4
gpt4 key购买 nike

我有一个作为守护进程运行的 Python 脚本。在启动时,它产生 5 个进程,每个进程都连接到一个 Postgres 数据库。现在,为了减少数据库连接的数量(最终会变得非常大),我试图找到一种跨多个进程共享单个连接的方法。为此,我查看了 multiprocessing.sharedctypes.Value API。但是,我不确定如何跨进程使用此 API 传递 psycopg2.connection 对象。谁能告诉我怎么做?

我也愿意接受其他想法来解决这个问题。

之所以没有考虑将连接作为构造函数的一部分传递给5个进程,是因为互斥处理。如果我采用这种方法,我不确定如何防止多个进程访问连接。谁能告诉我这样做是否正确?

最佳答案

你不能像那样理智地跨进程共享数据库连接。您可以某种线程之间共享一个连接,但前提是您确保该连接一次仅由一个线程使用。这在进程之间不起作用,因为客户端的地址空间中存储了连接的客户端状态。

如果您需要大量并发工作人员,但他们并非一直使用数据库,您应该有一组数据库工作人员处理所有数据库访问并与您的数据库交换数据其他工作进程。每个数据库工作进程都有一个数据库连接。其他进程仅通过您的数据库 worker 与数据库对话。

Python 的多处理队列、fifos 等为此提供了适当的消息传递功能。

关于python - 在 Python 中跨进程共享与 postgres 数据库的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26070040/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com