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

Python Discussion :

Exercice - développement d'une solution distribuée


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2018
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2018
    Messages : 1
    Par défaut Exercice - développement d'une solution distribuée
    Bonsoir , est ce que vous pouvez m'aider pour avoir la solution de cet exercice svp c urgent
    merci d'avance



    Le but de ce problème pratique est de développer une solution distribuée en langage Python. La
    solution est constituée de 3 agents :

    • Agent Client (fichier de script Python Client.py)
    • Agent Serveur (fichier de script Python Serveur.py)
    • Agent Annuaire (fichier de script Annuaire.py)

    Voici la description fonctionnelle de la solution : (12 points)

    • L’agent client communique avec son utilisateur à travers les entrées et sorties standards.
    L’utilisateur demande d’exécuter une fonction en donnant les valeurs de ses paramètres. Par
    exemple :
    somme(9,11)
    • Le client envoie au serveur la fonction et les paramètres saisis par le client.
    • Le serveur envoie la trace de la fonction à l’agent annuaire (exemple : somme(a,b) )
    • Si l’annuaire possède une fonction ayant la même trace que la fonction reçue à partir du
    serveur, il lui envoie son code source. (exemple : somme(c,d)). Sinon, il l’informe que la
    fonction n’est pas incluse dans l’annuaire.
    • Au cas où le serveur reçoit le code source à partir de l’annuaire, il l’exécute en lui passant les
    bonnes valeurs des paramètres. Et le renvoi à l’agent client
    • Si le serveur est informé que la fonction n’existe pas il en informe le client.
    • Le client affiche les résultats reçus à partir du serveur.

    Il faut aussi traiter deux parmi ces 3 besoins optionnels : (4 points par besoin)

    • Le serveur cache les codes déjà reçus à partir de l’annuaire pour une durée de temps fixe
    paramétrable au lancement du serveur.
    • Le serveur se rappelle des résultats de recherche chez l’annuaire et des résultats des
    précédentes exécutions
    • L’annuaire retourne la fonction dont le nom ressemble le plus à la fonction demandée
    (penser aux préfixes, suffixes, etc). A vous d’imaginer une mesure de ressemblance.
    Il faut indiquer en commentaires les hypothèses et les options choisies.
    Veiller à la qualité du code produit.

  2. #2
    Membre Expert

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Par défaut
    Bonjour

    Et sinon sérieusement, tu penses que l'on va faire ton exercice à ta place ? ... Montre nous ce que tu as déjà codé, ce que tu as essayé, et après on pourra discuter.

  3. #3
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Juste quelques pistes pour démarrer.

    Il faut d'abord choisir le protocole. Pour l'exercice, un serveur TCP serait suffisant. Un serveur UDP serait trop limité, et un serveur web trop compliqué (communication en html, calcul en CGI, etc...). Attention, un serveur TCP fonctionne en TCP/IP, mais ce n'est pas du web (un navigateur web ne serait pas un bon client).

    Pour faire un serveur TCP, le plus simple est d'utiliser le module socketserver. Il y a encore un choix entre:
    - un serveur synchrone qui traite les requêtes une par une (et qui doit donc attendre la fin d'une requête pour traiter la suivante.
    - un serveur asynchrone multi-thread qui peut recevoir toutes les requêtes en temps réel, et les traite chacune d'entre elles dans un thread.
    - serveur asynchrone multi-processus: idem mais avec des processus

    Pour l'exercice, et dans la mesure où il n'est pas prévu plusieurs utilisateurs en même temps, un serveur synchrone devrait suffire (et c'est le plus simple!).

    Regarde la doc => https://docs.python.org/3/library/so...e-socketserver. Il y a quelques exemples à essayer pour comprendre.

    Pour le client TCP, on utilise le module socket => https://docs.python.org/3/library/so...#module-socket.

    Je ne sais pas si "Annuaire.py" doit faire l'objet d'un 2ème serveur TCP ou être simplement une fonction appelée par le serveur. A voir.

    Pour répondre à la dernière instruction ("L’annuaire retourne la fonction dont le nom ressemble le plus à la fonction demandée"), Python dispose de la fonction SequenceMatcher du module difflib, qui permet de trouver des mots qui se ressemblent avec un ratio de ressemblance.

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Citation Envoyé par tyrtamos Voir le message
    Il faut d'abord choisir le protocole. Pour l'exercice, un serveur TCP serait suffisant. Un serveur UDP serait trop limité, et un serveur web trop compliqué (communication en html, calcul en CGI, etc...).
    Bizarre! Personnellement, j'aurais commencé par définir 3 classes(*): Client, Serveur et Annuaire et utilisé des appels de méthode comme échange de messages (des chaînes de caractères). Après si on veut avoir de "vrais" Agents et une communication asynchrone, on peut utiliser des threads et queues.
    L'avantage est que c'est bien plus facile à développer ne serait ce que pour démarrer et arrêter le bazar lors de la mise au point. Puis une fois que le truc marche, on change le transport (i.e. on remplace les Queue par des sockets).
    (*) Comme il y a un seul Client, un seul Serveur et un seul Annuaire, passer par les "class" est inutile, on peut utiliser différents modules (client.py, serveur.py, annuaire.py) qui sont des sortes de "singletons".

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour wiztricks,

    Citation Envoyé par wiztricks Voir le message
    Personnellement, j'aurais commencé par définir 3 classes(*): Client, Serveur et Annuaire et utilisé des appels de méthode comme échange de messages (des chaînes de caractères). Après si on veut avoir de "vrais" Agents et une communication asynchrone, on peut utiliser des threads et queues.
    Ce n'est pas bizarre: il vaut mieux choisir le protocole (UDP, TCP, web) avec de se lancer tout de suite dans le code. Et j'ai bien parlé des cas synchrone, thread et processus. Pour le reste c'est ok.

Discussions similaires

  1. Discussion d'une solution d'un exercice
    Par narutoma dans le forum Schéma
    Réponses: 0
    Dernier message: 10/05/2012, 18h47
  2. développement d'une solution de paiement électronique
    Par ysahel dans le forum Développement Web en Java
    Réponses: 8
    Dernier message: 18/05/2009, 22h40
  3. je cherche une solution pour cet exercice
    Par rafikadouni dans le forum Débuter
    Réponses: 4
    Dernier message: 22/11/2007, 22h26

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