2

我有一个站点,每次在服务器运行时尝试打开数据库时,它都会显示一个错误,即数据库已由不同的进程打开。

问题是我有一些脚本可以用 cron 安排来检查数据库,甚至只是pshell在服务器运行时使用。

到目前为止,似乎不可能从不同的进程打开数据库,而文档实际上说可以有多个连接到数据库。

这个问题迫使我一次只运行一个脚本/进程,包括服务器。

4

2 回答 2

5

ZODB 在其默认配置中是一个进程内对象数据库。但是,您可以使用客户端-服务器模型跨进程共享它。

您在这里有 3 个选项:

  • 使用ZEO创建一个专用进程来共享 ZODB 存储。曾经有一个关于将 ZODB 与 ZEO与 Pyramid 特定说明一起使用的 Pyramid 食谱条目,但请考虑到它已于2013 年 12 月因过时而被删除。对我来说,这些说明看起来仍然相当准确,但我还没有测试过它们。
  • 使用RelStorage将对象数据库存储在 Oracle、MySQL 或 PostgeSQL 中。
  • 使用NEO将 MySQL 用作分布式后端。警告:该平台(尚未)与 Python 3 兼容,但该项目正在积极开发中(截至 2018 年 11 月),因此可能会出现这种情况。
于 2012-11-08T16:53:44.860 回答
0

您可以使用 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”放在同一文件夹中

于 2013-01-18T12:47:36.740 回答