使用Twisted Python的Perspective Broker功能时遇到问题。我的代码结构如下:
class DBService(service.Service):
def databaseOperation(self, input):
# insert input into DB
class PerspectiveRoot(pb.Root):
def __init__(self, service):
self.service = service
def remote_databaseOperation(self, input):
return self.service.databaseOperation(input)
db_service = DBService()
pb_factory = pb.PBServerFactory(PerspectiveRoot(db_service))
我将工厂连接到TCP服务器,然后连接多个客户端,这些客户端能够通过remote_databaseOperation
功能将记录插入数据库。
这样可以正常工作,直到请求数量变大,然后我最终得到重复输入和缺少输入。我假设这是因为DBService的'input'变量在同时请求期间持续存在并被覆盖。它是否正确?如果是这样,那么重写我的代码以便它可以处理同时请求的最佳方法是什么?
我的第一个想法是让DBService维护一个DB添加列表并循环遍历它,而客户端能够附加到列表中。这是最“扭曲”的方式吗?
或者,每个客户端都有一个单独的pb.Root实例吗?在这种情况下,我可以将数据库操作移到那里,因为它的变量不会被覆盖。