tanszek:oktatas:iss_t:xml-rpc
This is an old revision of the document!
Table of Contents
XML-RPC tutorial
Server in Python
from xmlrpc.server import SimpleXMLRPCServer
from xmlrpc.server import SimpleXMLRPCRequestHandler
# Restrict to a particular path.
class RequestHandler(SimpleXMLRPCRequestHandler):
rpc_paths = ('/RPC2',)
# Create server
with SimpleXMLRPCServer(('localhost', 8000),
requestHandler=RequestHandler) as server:
server.register_introspection_functions()
# Register pow() function; this will use the value of
# pow.__name__ as the name, which is just 'pow'.
server.register_function(pow)
# Register a function under a different name
def adder_function(x, y):
return x + y
server.register_function(adder_function, 'add')
# Register an instance; all the methods of the instance are
# published as XML-RPC methods (in this case, just 'mul').
class MyFuncs:
def mul(self, x, y):
return x * y
server.register_instance(MyFuncs())
# Run the server's main loop
server.serve_forever()
Client - in Python
import xmlrpc.client
s = xmlrpc.client.ServerProxy('http://localhost:8000')
print(s.pow(2,3)) # Returns 2**3 = 8
print(s.add(2,3)) # Returns 5
print(s.mul(5,2)) # Returns 5*2 = 10
# Print list of available methods
print(s.system.listMethods())
Task: XML-RPC – Remote Task Manager
The goal of this exercise is to understand how Remote Procedure Calls (RPC) work in a client–server architecture using the XML-RPC protocol. Implement a simple task management system consisting of a Python XML-RPC server and a Python client application.
Server
Create an XML-RPC server in Python that manages a list of tasks.
Each task should contain the following fields:
- id – unique integer identifier
- title – short text describing the task
- completed – boolean value indicating whether the task is finished
The server must provide the following remote methods:
| Method | Description |
|---|---|
| add_task(title) | Creates a new task and returns the generated task ID |
| list_tasks() | Returns all tasks as a list of dictionaries |
| complete_task(task_id) | Marks the specified task as completed |
| delete_task(task_id) | Removes the specified task |
| get_task(task_id) | Returns the details of a single task |
| get_task_by_title(title) | Returns the details of a single task (by title string) |
The server should store tasks in memory while it is running.
Client
Write a Python client that connects to the XML-RPC server and allows the user to interact with the task manager. The client program should:
- connect to the XML-RPC server
- call the remote methods
- display results in a readable format
The client should provide a simple command line menu, for example:
1 - Add task 2 - List tasks 3 - Complete task 4 - Delete task 5 - Show task details by id 6 - Show task details by title 0 - Exit
tanszek/oktatas/iss_t/xml-rpc.1773653516.txt.gz · Last modified: 2026/03/16 09:31 by knehez
