Hi, all<br><br> I need a XMLRPC server, which works with database and returns data to the clients.<br> But I can not find any possibility to keep the object state on server between the clients calls.<br><br> Here is my code:<br>
<br> 1. Server:<br><br>from SimpleXMLRPCServer import SimpleXMLRPCServer<br>from SimpleXMLRPCServer import SimpleXMLRPCRequestHandler<br><br># Restrict to a particular path.<br>class RequestHandler(SimpleXMLRPCRequestHandler):<br>
rpc_paths = ('/RPC2',)<br><br># Create server<br>server = SimpleXMLRPCServer(("localhost", 8000),<br> requestHandler=RequestHandler)<br>server.register_introspection_functions()<br>
<br>class MyClass:<br> def __init__(self, a):<br> self.a = a<br> # and some heavy works which I would like to do once<br> def say(self):<br> return a<br><br>cl = MyClass(100)<br><br>def return_my_value():<br>
return cl.say()<br> <br>server.register_function(return_my_value, 'r_v')<br> <br># Run the server's main loop<br>server.serve_forever()<br><br> 2. Client:<br><br>import xmlrpclib<br><br>s = xmlrpclib.ServerProxy('<a href="http://localhost:8000">http://localhost:8000</a>')<br>
print s.r_v()<br><br> When I'm running client I get this error message:<br><br>demas@myhost ~/sources/study/python $ python rpc_client.py<br>Traceback (most recent call last):<br> File "rpc_client.py", line 4, in <module><br>
print s.r_v()<br> File "/usr/lib/python2.6/xmlrpclib.py", line 1199, in __call__<br> return self.__send(self.__name, args)<br> File "/usr/lib/python2.6/xmlrpclib.py", line 1489, in __request<br>
verbose=self.__verbose<br> File "/usr/lib/python2.6/xmlrpclib.py", line 1253, in request<br> return self._parse_response(h.getfile(), sock)<br> File "/usr/lib/python2.6/xmlrpclib.py", line 1392, in _parse_response<br>
return u.close()<br> File "/usr/lib/python2.6/xmlrpclib.py", line 838, in close<br> raise Fault(**self._stack[0])<br>xmlrpclib.Fault: <Fault 1: "<type 'exceptions.NameError'>:global name 'a' is not defined"><br>
<br><br>How can I fix it? Is there any possibility to keep the object state between the clients calls?<br><br>Thanks, <br>Demas<br>