出于学术目的,我需要开发一个演示应用程序,将 ZODB 与一些轻量级 Web 服务器一起使用,比如 CherryPy。ZODB 以只读方式使用。客户端查询服务器端 ZODB。服务器应该“有多个进程同时访问 ZODB”。
Zope 文档说“ ZEO 是让多个进程同时访问 ZODB 的唯一方法。 ”但是我应该如何理解和实现这个 ZEO 东西呢?
为了清楚起见,我写了一些代码,只是一个简单的 TCP 服务器:
import SocketServer
import ZODB
from ZEO import ClientStorage
from ZODB.DB import DB
addr = ('localhost', 9999)
storage = ClientStorage.ClientStorage(addr)
zdb = DB(storage)
# or the following method:
# import ZODB.config
# zdb = ZODB.config.databaseFromURL('zeo.conf')
class MyTCPHandler(SocketServer.BaseRequestHandler):
def ZODBThing(self, rec_id):
con = zdb.open()
records = con.root()['records']
buff=records[int(rec_id)]
con.close()
return buff
def handle(self):
self.data = self.request.recv(1024).strip()
self.request.sendall(str(self.ZODBThing(self.data)))
if __name__ == "__main__":
HOST, PORT = "localhost", 9998
server = SocketServer.TCPServer((HOST, PORT), MyTCPHandler)
server.serve_forever()
zdb.close()
storage.close()
- 以上代码代表了我对ZEO使用的理解。我需要知道我的理解是对还是错。
- zeoctl.exe 的用途和用途是什么?