簡體   English   中英

使用zerorpc維護會話

[英]Maintain sessions with zerorpc

如何使用Zerorpc服務器維護不同的會話或本地狀態?

例如(如下),如果我有多個客戶端,則后續的客戶端將覆蓋模型狀態。 我考慮過每個具有ID的客戶端,RPC邏輯將嘗試以這種方式分離變量,但是tbis看起來很混亂,一旦客戶端斷開連接,我將如何清除舊狀態/變量?

服務器

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

import zerorpc

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

客戶2

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()

不確定會話...但是如果您想找回不同的型號? 也許您只有一次實例化一個新Model()的函數?

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()

客戶:

import zerorpc

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM