从两个进程访问ZODB

2024-04-26 07:23:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个站点,每当我试图在服务器运行时打开数据库时,它都会显示一个错误,即数据库已被其他进程打开。在

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

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

强制服务器一次运行一个进程。在


Tags: 服务器脚本数据库doc进程站点错误调度
2条回答

你可以使用RelStorage。在

pip install RelStorage

。。。或添加到设置.py要求:

^{pr2}$

改变开发者.ini分段[应用程序:主]公司名称:

[app:main]
...
zodbconn.uri = zconfig://%(here)s/relstorage.conf

创建文件'关系存储.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>

根据设置关系存储.conf'必须与'显影剂.ini'

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

这里有3个选项:

  • 使用ZEO创建共享ZODB存储的专用进程。以前在Using ZODB with ZEO上有一个金字塔烹饪书条目,带有金字塔特定的指令,但是考虑到它是removed in December 2013过时的。对我来说,这些说明看起来还相当准确,但我还没有测试过。在
  • 使用RelStorage将对象数据库存储在Oracle、MySQL或PostgeSQL中。在
  • 使用NEO将MySQL用作分布式后端。警告:这个平台还没有(现在)与python3兼容,但是这个项目正在积极地进行中(截至2018年11月),所以这可能是有希望的。在

相关问题 更多 >