ZEO ZODB本地运行不起作用



我试着查看在ZODB数据库上运行ZEO的文档,但它并没有按照他们所说的那样工作。我可以让一个常规的ZODB正常运行,但我想让一个程序的几个进程可以访问数据库,所以我正在努力让ZEO工作。

我在一个带有子文件夹zeo的文件夹中创建了这个脚本,该文件夹将在另一个并行过程中保存make_server函数创建的"database.fs"文件:

代码:

from ZEO import ClientStorage
import ZODB
import ZODB.config
import os, time, site, subprocess, multiprocessing
# make the server in for the database in a separate process with windows command
def make_server():
    runzeo_path = site.getsitepackages()[0] + "Libsite-packageszeo-4.0.0-py2.7.eggZEO\runzeo.py"
    filestorage_path = os.getcwd() + 'zeodatabase.fs'
    subprocess.call(["python", runzeo_path, "-a", "127.0.0.1:9100", "-f" , filestorage_path])
if __name__ == "__main__":
    server_process = multiprocessing.Process(target = make_server)
    server_process.start()
    time.sleep(5)
    storage = ClientStorage.ClientStorage(('localhost', 9100), wait=False)
    db = ZODB.DB(storage)
    connection = db.open()
    root = connection.root()

如果未给出CCD_ 3,则程序将仅在CCD_。

如果给定wait=False,则会产生以下错误:

错误消息:

Traceback (most recent call last):
  File "C:UserscbrownGoogle DriveEclipseWorkspaceNewSpectro - v1201312022 - databasezeo.py", line 17, in <module>
    db = ZODB.DB(storage)
  File "C:Python27libsite-packageszodb-4.0.0-py2.7.eggZODBDB.py", line 443, in __init__
    temp_storage.load(z64, '')
  File "C:Python27libsite-packageszeo-4.0.0-py2.7.eggZEOClientStorage.py", line 841, in load
    data, tid = self._server.loadEx(oid)
  File "C:Python27libsite-packageszeo-4.0.0-py2.7.eggZEOClientStorage.py", line 88, in __getattr__
    raise ClientDisconnected()
ClientDisconnected

这是运行服务器的进程的cmd提示符的输出:

------
2013-12-06T21:07:27 INFO ZEO.runzeo (7460) opening storage '1' using FileStorage
------
2013-12-06T21:07:27 WARNING ZODB.FileStorage Ignoring index for C:Userscab0008
Google DriveEclipseWorkspaceNewSpectro - v1201312022 - databasezeodatabas
e.fs
------
2013-12-06T21:07:27 INFO ZEO.StorageServer StorageServer created RW with storage
s: 1:RW:C:Userscab0008Google DriveEclipseWorkspaceNewSpectro - v120131202
2 - databasezeodatabase.fs
------
2013-12-06T21:07:27 INFO ZEO.zrpc (7460) listening on ('127.0.0.1', 9100)

我可能做错了什么?我只想让它现在在本地运行,这样就不需要任何花哨的网络内容了。

您应该使用适当的流程管理并简化您的生活。您可能希望了解主管,该主管可以负责运行/启动/停止您的应用程序和ZEO。

否则,您需要了解守护ZEO的双叉技巧——但当像supervisor这样的流程管理工具为您执行此操作时,为什么还要麻烦呢。

如果您精通关系数据库管理,并且已经拥有一个可供使用的关系数据库,那么您也可以将RelStorage视为一个非常好的ZODB(低级)存储后端。

在Windows中,应该在路径中使用双\而不是单\。实现这一点的简单而便携的方法是使用os.path.join()函数,例如os.path.join('os.getcwd()', 'zeo', 'database.fs')。否则,类似的代码对我来说还可以。

在Windows上出现了相同的错误,在Linux上一切正常。。。您的代码是可以的,要使其工作,请更改以下内容C: \Python33\Lib\site-packages\ZEO-4.0.0-py3.3.egg\ZEO\zrpc\trigger.py ln:235

self.trigger.send(b'x')

C: \Python33\Lib\site-packages\ZEO-4.0.0-py3.3.egg\ZEO\zrpc\client.py ln:458:459-评论他们

这是那些线路:

if socktype != socket.SOCK_STREAM:
    continue    

相关内容

  • 没有找到相关文章

最新更新