使用Python中的Perspective Broker扭曲服务中的变量的持久性?

时间:2015-08-29 16:32:17

标签: python twisted

使用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实例吗?在这种情况下,我可以将数据库操作移到那里,因为它的变量不会被覆盖。

0 个答案:

没有答案