2009-07-29 7 views
0

J'essaie de déclencher une exception du côté serveur d'un SimpleXMLRPCServer; cependant, toutes les tentatives obtiennent une exception "Fault 1" du côté client.Envoyer une exception sur le SimpleXMLRPCServer

RPC_Server.AbortTest() fichier "C: \ Python25 \ lib \ xmlrpclib.py", ligne 1147, dans appel retour self .__ envoyer (nom self .__, args) fichier « C: \ Python25 \ lib \ xmlrpclib.py ", ligne 1437, dans __request verbose = self .__ verbose Fichier" C: \ Python25 \ lib \ xmlrpclib.py ", ligne 1201, dans la requête return self._parse_response (h.getfile() , sock) Fichier "C: \ Python25 \ lib \ xmlrpclib.py", ligne 1340, dans _parse_response renvoient u.close() Fichier "C: \ Python25 \ lib \ xmlrpclib.py", ligne 787, dans close raise Défaut (** self._stack [0]) xmlrpclib.Fault:: Test interrompu par un RPC request ">

Répondre

1

Oui, c'est ce qui se passe lorsque vous déclenchez une exception côté serveur. Vous attendez le SimpleXMLRPCServer pour renvoyer l'exception au client?

Vous ne pouvez utiliser que des objets qui peuvent être rassemblés via XML. Cela inclut

  • booléenne: Les constantes Vrai et Faux
  • entiers: Passer directement
  • nombres à virgule flottante: Passer directement
  • cordes: Passer directement
  • tableaux: Toute séquence Python type contenant des éléments conformes. Les tableaux sont renvoyés sous forme de listes
  • structures: un dictionnaire Python. Les clés doivent être des chaînes, les valeurs peuvent être de type conforme. Les objets des classes définies par l'utilisateur peuvent être transmis; seul leur attribut __dict__ est transmis.
  • dates: en secondes depuis l'époque (passer dans une instance de la classe DateTime) ou une instance datetime.datetime.
  • données binaires: passer dans une instance de la classe wrapper binaire
0

Si vous soulevez une exception comme ceci:

raise Exception('Help!') 

dans le serveur membre du message de l'exception que vous obtenez dans le client sera identique à l'exécution de str() sur l'exception originale préfixée par la représentation sous forme de chaîne du type.

Le résultat que je reçois pour le membre du message est:

<type 'exceptions.Exception'>:Help! 

Vous pouvez certainement analyser cela pour obtenir les informations dont vous avez besoin.

Questions connexes