Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

เซิร์ฟเวอร์ XMLRPC และโมดูลไคลเอนต์ใน Python


เราสามารถสร้างเซิร์ฟเวอร์ข้ามแพลตฟอร์มที่ไม่ขึ้นกับภาษาได้โดยใช้โปรโตคอล XML-RPC เราใช้ SimpleXMLRPCServer เพื่อสร้างอินสแตนซ์ SimpleXMLRPCServer และบอกให้รับฟังคำขอที่เข้ามา ต่อไปเราจะกำหนดฟังก์ชันบางอย่างเพื่อเป็นส่วนหนึ่งของบริการและลงทะเบียนฟังก์ชันเหล่านั้นเพื่อให้เซิร์ฟเวอร์ทราบวิธีการเรียกใช้

เปิดเซิร์ฟเวอร์

ในตัวอย่างด้านล่าง เราสร้างเซิร์ฟเวอร์โดยใช้อินสแตนซ์ SimpleXMLRPCServer และลงทะเบียนบางฟังก์ชันที่กำหนดไว้ล่วงหน้าและแบบกำหนดเอง สุดท้าย เรานำเซิร์ฟเวอร์เข้าสู่การรับและตอบสนองต่อคำขออย่างไม่มีที่สิ้นสุด

ตัวอย่าง

from xmlrpc.server import SimpleXMLRPCServer
from xmlrpc.server import SimpleXMLRPCRequestHandler
class RequestHandler(SimpleXMLRPCRequestHandler):
   rpc_paths = ('/RPC2',)
with SimpleXMLRPCServer(('localhost', 9000),
                        requestHandler=RequestHandler) as server:
   server.register_introspection_functions()
   # Register len() function;
   server.register_function(len)
   # Register a function under a different name
   @server.register_function(name='rmndr')
   def remainder_function(x, y):
      return x // y
   # Register a function under function.__name__.
   @server.register_function
   def modl(x, y):
      return x % y
   server.serve_forever()

เมื่อเริ่มต้นเซิร์ฟเวอร์ข้างต้น ก็สามารถเรียกเซิร์ฟเวอร์โดยโปรแกรมไคลเอนต์ซึ่งสามารถอ้างถึงฟังก์ชันและทำการเรียกฟังก์ชันได้

การเรียกใช้ไคลเอ็นต์

ตัวอย่าง

import xmlrpc.client
s = xmlrpc.client.ServerProxy('https://localhost:9000')
print(s.len("Tutorialspoint"))
print(s.rmndr(12,5))
print(s.modl(7,3))
# Print list of available methods
print(s.system.listMethods())

ผลลัพธ์

การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -

14
2
1
['len', 'modl', 'rmndr', 'system.listMethods', 'system.methodHelp', 'system.methodSignature']