2009-10-08 7 views
0

J'ai un serveur qui doit répondre aux requêtes HTTP et XML-RPC. À l'heure actuelle, j'ai une instance de SimpleXMLRPCServer, et une instance de BaseHTTPServer.HTTPServer avec un gestionnaire de requêtes personnalisé, s'exécutant sur différents ports. J'aimerais exécuter les deux services sur un seul port.Serveur HTTP Python avec XML-RPC

Je pense qu'il devrait être possible de modifier la classe CGIXMLRPCRequestHandler pour également traiter les requêtes HTTP personnalisées sur certains chemins ou, alternativement, d'utiliser plusieurs gestionnaires de requêtes en fonction du chemin demandé. Cependant, je ne suis pas vraiment sûr de la manière la plus propre de le faire.

Répondre

0

Utilisez la classe SimpleXMLRPCDispatcher directement à partir de votre propre gestionnaire de requêtes.

+0

Merci, cela semble que ça va marcher! Pour référence future, la méthode _marshaled_dispatch était vraiment utile –

0

Existe-t-il une raison de ne pas exécuter un vrai serveur web avec des réécrits d'url vers les deux ports que vous utilisez actuellement? Cela va rendre la vie beaucoup plus facile à long terme

+0

J'écris une application de bureau autonome, donc nécessitant un serveur web autonome serait certainement trop beaucoup de travail pour l'utilisateur à configurer. –

0

manière la plus simple serait (testé pour Python 3.3, mais devrait fonctionner pour 2.x avec les importations modifiées):

from http.server import SimpleHTTPRequestHandler 
from xmlrpc.server import SimpleXMLRPCRequestHandler,SimpleXMLRPCServer 

class MixRequestHandler(SimpleHTTPRequestHandler,SimpleXMLRPCRequestHandler): 
    pass 

srv=SimpleXMLRPCServer(("localhost",8080),MixRequestHandler) 
#normal stuff for SimpleXMLRPCServer 
Questions connexes