2011-01-21 2 views
2

Мне нужно создать приложение python (витая), которое принимает соединения от клиентов через XML-RPC и выполняет операции, которые могут потребовать нескольких шагов. Реализация xml-rpc не имеет типичной поддержки сеанса, поэтому мне нужно ее реализовать.Tack on session для приложения «stateless» xml-rpc

Что мне кажется, это какой-то постоянный объект, который отслеживает ход многоступенчатых операций и дает клиенту ключ, который он может использовать для идентификации инициированной им операции, получения обновлений статуса или отправлять команды (пауза/отмена и т. д.).

Для меня подходящей моделью для этого является «Job»; googling для «библиотеки вакансий python» дает ожидаемые бесполезные результаты.

Прежде чем реализовать это, есть ли что-то существующее, которое я могу использовать вместо этого?

Спасибо!

ответ

0

Я думаю, что вы можете иметь постоянный объект на сервере, что-то вроде:

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