将会话支持添加到“无状态”xml-rpc 应用程序

Posted

技术标签:

【中文标题】将会话支持添加到“无状态”xml-rpc 应用程序【英文标题】:Tack on session support to a 'stateless' xml-rpc app 【发布时间】:2011-01-21 22:34:52 【问题描述】:

我必须创建一个 python (twisted) 应用程序,它通过 XML-RPC 接受来自客户端的连接并执行可能需要多个步骤的操作。 xml-rpc 实现没有典型的会话支持,所以我需要实现它。

我认为我需要的是某种类型的持久对象,它可以跟踪多步操作的进度,并为客户端提供一个密钥,它可以用来识别它启动的操作、获取状态更新或发送命令(暂停/取消等)。

对我来说,一个合适的模型是“工作”;谷歌搜索“python 作业库”会产生预期的无用结果。

在我实现这个之前,有什么东西可以用来代替吗?

谢谢!

【问题讨论】:

【参考方案1】:

我认为您可以在服务器中拥有一个持久对象,例如:

from twisted.web import xmlrpc, server

class MultiStep(xmlrpc.XMLRPC):
    def __init__(self) :
        xmlrpc.XMLRPC.__init__(self)
        self.db = 
    def getX(self, user, x):
       self.db[user] = 'x' : x
       return 'OK'
    def getY(self, user, y):
       self.db[user]['y'] = y
       return 'OK'
    def plus(self,user) :
       return self.db[user]['x'] + self.db[user]['y']

if __name__ == '__main__':
    from twisted.internet import reactor
    r = MultiStep()
    reactor.listenTCP(6666, server.Site(r))
    reactor.run()

【讨论】:

以上是关于将会话支持添加到“无状态”xml-rpc 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

Drools:无状态与有状态知识会话

实现会话跟踪的技术有哪些?

HTTP会话的使用与管理

Flutter - 在无状态小部件中动态地将项目添加到 ListView

实现会话跟踪的技术有哪些

为啥要池化无状态会话 bean?