Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 10 sur 10
  1. #1
    Nouveau Membre du Club
    Inscrit en
    décembre 2006
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : décembre 2006
    Messages : 196
    Points : 34
    Points
    34

    Par défaut Webservice depuis un autre poste

    Bonjour,

    Je fais actuellement des tests pour créer des webservices (un simple affichage de HelloWorld) avec SOAPpy.
    J'ai récupéré un tuto assez simple qui fonctionne très bien en local, par contre si j'essaie de dialoguer depuis un autre poste, ça ne fonctionne pas.

    En local, j'interroge le serveur avec cette commande :
    Code :
    client = SOAPpy.SOAPProxy("http://localhost:8011")
    Par contre, comment faire sur un autre poste (j'ai essayé de remplacé localhost par l'IP mais sans succès...).

    Merci.
    Quand tu regardes vers le Nord, t'as le "Sud au cul" ...

  2. #2
    Modérateur

    Homme Profil pro
    Architecte technique
    Inscrit en
    juin 2008
    Messages
    5 422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2008
    Messages : 5 422
    Points : 8 181
    Points
    8 181

    Par défaut

    Salut,

    Cela doit fonctionner de la même façon modulo que l'identifiant passé soit "bon".

    Après c'est (peut être) un problème de sécurité côté stack IP du coté serveur: un PC est généralement équipé d'un parefeu qui filtre les demandes de connexion entrantes. Le réseau être client est serveur peut aussi avoir proxy et parefeu qui "troublent".

    Rien de spécifique à la programmation Python.
    - W
    Architectures Post-Modernes

  3. #3
    Nouveau Membre du Club
    Inscrit en
    décembre 2006
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : décembre 2006
    Messages : 196
    Points : 34
    Points
    34

    Par défaut

    Merci pour la réponse, mais j'ai toujours le problème...

    Sur mon serveur serveur.truc.fr avec l'IP X.X.X.X, j'ai un fichier python qui contient la fonction helloworld.
    Dans ce fichier, je fais un
    Code :
    server=SOAPpy.SOAPServer(("127.0.0.1",8011))
    Au niveau du client, j'ai
    Code :
    client = SOAPpy.SOAPProxy("X.X.X.X:8011")
    Ca ne fonctionne pas, même en local. Ca ne marche que si je met localhost à la place de X.X.X.X.

    C'est comme ça que c'est censé fonctionner ? Comment est-ce qu'on dit dans quel répertoire se trouve le fichier py à utiliser (là où se trouve les fonctions) ?

    Merci d'avance
    Quand tu regardes vers le Nord, t'as le "Sud au cul" ...

  4. #4
    Nouveau Membre du Club
    Inscrit en
    décembre 2006
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : décembre 2006
    Messages : 196
    Points : 34
    Points
    34

    Par défaut

    J'ai remplacé dans le fichier python sur le serveur le 127.0.0.1 par l'IP du serveur.

    En local, ca fonctionne bien en mettant l'adresse IP du serveur dans le SOAPProxy, mais sur un autre poste, ça bloque.
    En debug, j'ai
    puis ça à l'air d'attendre la réponse...
    Quand tu regardes vers le Nord, t'as le "Sud au cul" ...

  5. #5
    Modérateur

    Homme Profil pro
    Architecte technique
    Inscrit en
    juin 2008
    Messages
    5 422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2008
    Messages : 5 422
    Points : 8 181
    Points
    8 181

    Par défaut

    Si vous configurez le serveur pour qu'il ne réponde qu'aux requêtes de connexions faites sur le port 8011 de "localhost"...
    Pourquoi espérer que le client puisse s'y connecter autrement?

    C'est comme ça que c'est censé fonctionner ?
    Il doit y avoir de bon tutoriels dans le forum "réseau".

    - W
    Architectures Post-Modernes

  6. #6
    Nouveau Membre du Club
    Inscrit en
    décembre 2006
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : décembre 2006
    Messages : 196
    Points : 34
    Points
    34

    Par défaut

    OK, merci pour la réponse.
    Et comment on peut dire au serveur de répondre à n'importe qui, pour qu'un client lambda puisse communiquer avec lui ?
    Il ne faut pas que les 2 adresses dans SOAPProxy et SOAPServer soient les mêmes ?

    J'ai bien regardé les tuto, mais soit le cas est très simple (client et serveur sur même machine, ça je sais faire...) ; soit c'est bien plus complexe avec des modèles xsd, des namespace... des choses dont je ne veux pas me soucier pour l'instant .
    Quand tu regardes vers le Nord, t'as le "Sud au cul" ...

  7. #7
    Modérateur

    Homme Profil pro
    Architecte technique
    Inscrit en
    juin 2008
    Messages
    5 422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2008
    Messages : 5 422
    Points : 8 181
    Points
    8 181

    Par défaut

    Citation Envoyé par Enthau Voir le message
    Et comment on peut dire au serveur de répondre à n'importe qui, pour qu'un client lambda puisse communiquer avec lui ?
    A priori via:
    server=SOAPpy.SOAPServer((socket.gethostname(),8011))

    Citation Envoyé par Enthau Voir le message
    J'ai bien regardé les tuto, mais soit le cas est très simple (client et serveur sur même machine, ça je sais faire...) ; soit c'est bien plus complexe avec des modèles xsd, des namespace... des choses dont je ne veux pas me soucier pour l'instant .
    Avant de pouvoir échanger XSD ou autres messages, client et serveur doivent avoir établi une connexion TCP (ou UDP).
    Cette mécanique est (heureusement) la même pour toutes les "sockets" réseau et passe par "socket.bind" et est documentée ici
    - W
    Architectures Post-Modernes

  8. #8
    Nouveau Membre du Club
    Inscrit en
    décembre 2006
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : décembre 2006
    Messages : 196
    Points : 34
    Points
    34

    Par défaut

    Nickel, après avoir ouvert les ports qui vont bien et donner les droits qu'il faut, ça fonctionne enfin... un grand merci.

    J'avais une dernière petite question : mon fichier sur le serveur qui répond à une demande du client est en .py, et actuellement je le lance avec la commande
    Ca tourne en permanence et attend qu'on le coupe à la main. Comment faire pour qu'il s'exécute en permanence, en fond (sans avoir à le lancer à la main) ? Un cron marcherait-il ?
    Merci.
    Quand tu regardes vers le Nord, t'as le "Sud au cul" ...

  9. #9
    Modérateur

    Homme Profil pro
    Architecte technique
    Inscrit en
    juin 2008
    Messages
    5 422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2008
    Messages : 5 422
    Points : 8 181
    Points
    8 181

    Par défaut

    Citation Envoyé par Enthau Voir le message
    Ca tourne en permanence et attend qu'on le coupe à la main. Comment faire pour qu'il s'exécute en permanence, en fond (sans avoir à le lancer à la main) ? Un cron marcherait-il ?
    Je suppose que si vous me parlez de "cron" vous êtes sous Linux.
    Techniquement "cron" est un ordonnanceur pour lancer des programmes à intervalles réguliers. Je ne suis pas certain que ce soit le "bon" outil pour lancer les process permanents appelés daemon.
    Jetez un oeil au PEP 3143 qui documente l'API de lancement d'un daemon sous Python.
    Je ne sais pas pourquoi le module n'a pas été intégré dans la PSL (il y a peut être un gros bug mais pas le temps de faire des recherches). Il est dispo sur PyPi

    - W
    Architectures Post-Modernes

  10. #10
    Nouveau Membre du Club
    Inscrit en
    décembre 2006
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : décembre 2006
    Messages : 196
    Points : 34
    Points
    34

    Par défaut

    Bonjour,

    Comme mon WS fonctionne bien, je voulais pousser un peu plus la chose.
    Je voulais ajouter une authentification, côté serveur ; soit par identifiant/mdp, soit par restriction ip sur le client. Par contre je ne trouve aucun tuto sur l'authentification et soappy.server.
    Est-ce que quelqu'un a déjà fait une telle manip ?

    Merci.
    Quand tu regardes vers le Nord, t'as le "Sud au cul" ...

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •