首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用zerorpc维护会话

使用zerorpc维护会话
EN

Stack Overflow用户
提问于 2013-10-31 05:46:51
回答 1查看 1K关注 0票数 2

如何使用零点服务器维护不同的会话或本地状态?

例如(下面),如果我有多个客户端,随后的客户端将覆盖模型状态。我认为每个客户端都有一个ID,而RPC逻辑将尝试以这种方式分离变量,但是tbis似乎很混乱,如果客户端断开连接,我将如何清除旧状态/变量?

服务器

代码语言:javascript
复制
import zerorpc
import FileLoader

class MyRPC(object):
    def load(self, myFile):
        self.model = FileLoader.load(myFile)
    def getModelName(self):
        return self.model.name

s = zerorpc.Server(MyRPC())
s.bind("tcp://0.0.0.0:4242")
s.run()

客户端1

代码语言:javascript
复制
import zerorpc

c = zerorpc.Client()
c.connect("tcp://127.0.0.1:4242")
c.load("file1")
print c.getModelName()

Client 2

代码语言:javascript
复制
import zerorpc

c = zerorpc.Client()
c.connect("tcp://127.0.0.1:4242")
c.load("file2") # AAAHH! The previously loaded model gets overwritten here! 
print c.getModelName()
EN

回答 1

Stack Overflow用户

发布于 2013-11-20 08:48:31

不确定sessions...but是否想要回不同的型号?也许您只需要一次函数来实例化一个新的Model()?

代码语言:javascript
复制
import zerorpc
import FileLoader

models_dict ={}  # Keep track of our models

def get_model(file):
    if file in models_dict:
        return models_dict[file]
    models_dict[file] = MyModel(file)
    return model

class MyModel(object):

    def __init__(self, file):
        if file:
            self.load(file)

    def load(self, myFile):
        self.model = FileLoader.load(myFile)

    def getModelName(self):
        return self.model.name

s = zerorpc.Server(<mypackagename.mymodulename>)  # Supply the name of current package/module
s.bind("tcp://0.0.0.0:4242")
s.run()

客户端:

代码语言:javascript
复制
import zerorpc

c = zerorpc.Client()
c.connect("tcp://127.0.0.1:4242")
print c.get_model("file1")
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19699240

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档