IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Réseau/Web Python Discussion :

probléme avec xmlrpcl-python


Sujet :

Réseau/Web Python

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 110
    Points : 59
    Points
    59
    Par défaut probléme avec xmlrpcl-python
    Bonjour,
    J'utilise xmlrpclib dans un script python sous linux mais ça ne marche pas et je ne sais pas ce qui ne va pas aujuste .
    Faut il activer le protocole xmlrpc? Comment l'activer?

    Voici un exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    import xmlrpclib
    server = xmlrpclib.Server('http://localhost:8000')
    print server.chop_in_half('testing...')
    Message d'erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Traceback (most recent call last):
      File "../brunet1/scripts/bput.py", line 6, in <module>
        print server.chop_in_half('testing...')
      File "/usr/lib/python2.5/xmlrpclib.py", line 1147, in __call__
        return self.__send(self.__name, args)
      File "/usr/lib/python2.5/xmlrpclib.py", line 1437, in __request
        verbose=self.__verbose
      File "/usr/lib/python2.5/xmlrpclib.py", line 1183, in request
        self.send_content(h, request_body)
      File "/usr/lib/python2.5/xmlrpclib.py", line 1297, in send_content
        connection.endheaders()
      File "/usr/lib/python2.5/httplib.py", line 860, in endheaders
        self._send_output()
      File "/usr/lib/python2.5/httplib.py", line 732, in _send_output
        self.send(msg)
      File "/usr/lib/python2.5/httplib.py", line 699, in send
        self.connect()
      File "/usr/lib/python2.5/httplib.py", line 683, in connect
        raise socket.error, msg
    socket.error: (111, 'Connection refused')
    Même si j'essay d'autre methodes de xmlrpc, j'obtiens le même message d'erreur !!!

    Merci de votre attention

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 222
    Points : 290
    Points
    290
    Par défaut
    J'ai jamais testé cette lib mais es-tu sûr de ton port 8000?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 29
    Points : 31
    Points
    31
    Par défaut
    Bonjour,

    Peut-être le serveur n'est-il pas lancé.

    Voici un petit exemple qui te permettra de tester le fonctionnement.
    Il y a deux scripts : le server.py et le client.py. Dans cet exemple, les deux scripts tournent sur la même machine (Il est bien evidemment possible de les faire fonctionner sur deux machines differentes en modifiant un peu le code).
    Dans le cadre d'un fonctionnement sur une même machine, il suffit de lancer deux terminaux, un pour chacun des scripts pour voir le fonctionnement.
    Le server.py doit etre lancé en premier pour qu'il soit à l'écoute.

    ./server.py

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    #!/usr/bin/env python
    # -*- encoding: utf-8 -*-
     
    # Lancer ce programme en local sur la même machine ou on va lancer le client.
    # Pour lancer le serveur, ouvrir un terminal et taper ./server.py
    # Une fois le serveur lancé, il faut lancer le client dans un autre terminal.
     
    from SimpleXMLRPCServer import SimpleXMLRPCServer
     
    class Hello:
    	"""     Renvoi au client un message """
     
    	def hello(self):
    		"""     Simple fonction de test pour savoir si le serveur fonctionne. """
    		# Message affiché en local (coté serveur)
    	        print  "\nConnection avec le client établie.\n"
    		# Message affiché chez le client (distant)
    	        return "\nConnection au serveur établie.\n"	
     
    # Le server peut etre accessible et est à l'ecoute sur le port 8000
    server = SimpleXMLRPCServer(("127.0.0.1", 8000)) 
     
    # Utilise l'instance de classe Hello et expose ses méthodes. Donc le client pourra appeler la methode hello()
    server.register_instance(Hello())
     
    try:
    	print "\nServeur XMLRPC v0.1 en marche. \nControl-C pour quitter."
    	server.serve_forever()
    except KeyboardInterrupt:
    	print ' \nInterruption du serveur...'

    ./client.py

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    #!/usr/bin/env python
    # -*- encoding: utf-8 -*-
     
    # Lancer ce programme en local sur la même machine ou est déjà lancé le serveur.
    # Pour lancer le client, ouvrir un terminal et taper ./client.py
    # Il faut d'abord lancer le serveur pour qu'il soit à l'écoute. 
     
    import xmlrpclib
     
    server = xmlrpclib.ServerProxy("http://localhost:8000")
     
    class Client():
    	"""      """		
    	def connection(self):
    		"""     Affiche un simple message """
    		# La méthode hello() de la classe exposée sur le serveur, est appelée.
    		message_de_connection  = server.hello()
    		print message_de_connection
     
     
    client = Client()
    client.connection()
    Dans le terminal qui gère le server, lorsque tu lanceras le script server.py, tu auras ça:
    aaron@ubuntu:~$ ./server.py

    Serveur XMLRPC v0.1 en marche.
    Control-C pour quitter.


    Dans le terminal qui gère le client, lorsque tu lançeras le script client.py, il se connectera au serveur, et appelera une methode exposée sur le serveur. La méthode retournera un message, que le client affichera :

    aaron@ubuntu:~$ ./client.py

    Connection au serveur établie.


    Au même moment, du côté du terminal du serveur, s'affichera ceci:


    Connection avec le client établie.

    localhost - - [11/Apr/2010 15:10:30] "POST /RPC2 HTTP/1.0" 200 -


    Le script server.py possède une classe Hello() qui contient une méthode hello(). Cette méthode fait deux choses: elle affiche dans le terminal un message (donc en local) et renvoi un message (donc à distance).

    On lance le serveur sur l'adresse locale pour qu'il soit à l'écoute sur le port 8000. On lui indique que la classe Hello exposera ses méthodes. Ce qui signifie que le client pourra utiliser ses méthodes ( server.register_instance(Hello()) )

    Côté client, le script client.py contient une classe Client(), qui possède une méthode connection(). Celle-ci se contente d'appeler la méthode exposée côté serveur, et d'en afficher le résultat. ( server.hello() )

    J'espère que ça t'aidera. Il est vrai qu'une documentation claire est difficilement trouvable sur ce sujet.

Discussions similaires

  1. problème avec la requet "insert" (python+postgres)
    Par tasnim86 dans le forum Général Python
    Réponses: 2
    Dernier message: 06/04/2008, 18h00
  2. Swig - Python/C++ problème avec STL
    Par mencaglia dans le forum Interfaçage autre langage
    Réponses: 2
    Dernier message: 26/11/2007, 18h21
  3. [turbogears] problème avec python 2.5
    Par gorgonite dans le forum Général Python
    Réponses: 1
    Dernier message: 23/05/2007, 17h48
  4. [Linux-XML] Probléme avec python-xml
    Par Exodus dans le forum Général Python
    Réponses: 5
    Dernier message: 27/03/2007, 15h47
  5. Problème avec python
    Par Thrystan dans le forum Gnome
    Réponses: 2
    Dernier message: 17/08/2006, 00h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo