我有一个站点,每次在服务器运行时尝试打开数据库时,它都会显示一个错误,即数据库已由不同的进程打开。
问题是我有一些脚本可以用 cron 安排来检查数据库,甚至只是pshell
在服务器运行时使用。
到目前为止,似乎不可能从不同的进程打开数据库,而文档实际上说可以有多个连接到数据库。
这个问题迫使我一次只运行一个脚本/进程,包括服务器。
ZODB 在其默认配置中是一个进程内对象数据库。但是,您可以使用客户端-服务器模型跨进程共享它。
您在这里有 3 个选项:
您可以使用 RelStorage。
pip install RelStorage
...或添加到 setup.py 需要:
requires = [
...
RelStorage',
]
在 [app:main] 部分更改 developer.ini:
[app:main]
...
zodbconn.uri = zconfig://%(here)s/relstorage.conf
使用以下内容创建文件“relstorage.conf”:
%import relstorage
<zodb main>
<relstorage>
<postgresql>
# The dsn is optional, as are each of the parameters in the dsn.
dsn dbname='zodb' user='zodbuser' host='yourhostname.net' password='YOURpassowrd'
</postgresql>
</relstorage>
</zodb>
根据设置,“relstorage.conf”必须与“developer.ini”放在同一文件夹中