Partage
  • Partager sur Facebook
  • Partager sur Twitter

Faisabilité d'un script en Python

Sujet résolu
    21 juillet 2011 à 10:24:03

    [Ce topic fait suite à celui-ci: Choix d'un langage pour script automatisé]

    Bonjour,

    Travaillant actuellement sur un projet, je suis amené à coder un script qui:
    1)Sélectionne des URLs dans une BDD selon certains critères.
    2)Boucle
    2.1)Récupère le contenu de la page.
    2.2)Contrôle la présence d'une phrase dans le contenu de la page.
    2.3)Met à jour des informations dans la BDD.

    La BDD contiendrait plusieurs centaines de liens à contrôler à intervalle régulier. Le script devra donc être capable d'attendre un timestamp précis avant d'effectuer la tâche puis se mettre en veille jusqu'au prochain test. Le script devra donc "tourner" tout seul.

    A terme, il se pourrait pour assurer le fonctionnement du script 24/24 ainsi que sa rapidité, que deux serveurs ou plus soit mis à disposition pour ce script. On aurait alors la configuration suivante:
    Serveur A: récupère les infos de la BDD et les envoie au serveur B et C.
    Serveur B et C: effectuent les tests et renvoie le résultat à A.
    Serveur A: enregistre le résultat dans la BDD.

    Il faudrait aussi prévoir que dans le cas où le serveur A tombe en panne, le serveur B puisse prendre la relève.
    Cette architecture ne se mettrait en place qu'à (très) long terme. Pour l'instant, un seul serveur sera mis à disposition pour le script. Mais il faudrait que je puisse ensuite modifier le script pour l'adapter à cette architecture.

    Ma question est: est-ce possible de réaliser cela relativement facilement sur un serveur dédié en langage Python ?

    Si vous avez besoin de précisions, n'hésitez pas !

    Merci d'avance et @+
    • Partager sur Facebook
    • Partager sur Twitter
      21 juillet 2011 à 22:39:09

      Oui. C'est typiquement le genre de chose qui se fait facilement en Python. La distribution du traitement peut, en revanche, s'avérer être une douleur dans le cul.
      • Partager sur Facebook
      • Partager sur Twitter
        21 juillet 2011 à 22:50:21

        oO Y a un jeu de mot ou bien t'arrivais juste pas à trouver de synonyme pour "difficile" ^^ ?

        Pour la distribution du traitement, j'installe le script sur plusieurs serveurs et je me sers des sockets pour communiquer, non ?

        @+
        • Partager sur Facebook
        • Partager sur Twitter
          21 juillet 2011 à 23:42:10

          C'est assez simple a mettre en place.
          Pour ce qui est de la distribution des taches, tu peut le faire a la main comme utiliser les SocketServer ( http://docs.python.org/library/socketserver.html ) qui n'est pas trop compiliquer.

          Cependant, je suis sur qu'il existe de biblio pour faire de la distribution de taches. Apres, j'ai chercher du cote du "Grid Computing" ou "Cluster master slave python" et je suis tomber sur cette page : http://wiki.python.org/moin/ParallelProcessing
          • Partager sur Facebook
          • Partager sur Twitter
            22 juillet 2011 à 9:13:43

            Merci pour ta réponse ! Apparemment, Python est LE langage qu'il me faut. Je vais passer le topic en résolu ce weekend, si quelqu'un a un commentaire à ajouter, il est le bienvenu !

            Merci et @+
            • Partager sur Facebook
            • Partager sur Twitter
              23 juillet 2011 à 23:37:49

              Bonsoir,

              Je me suis un peu renseigné sur Python et du côte de MySQL tout a l'air OK. Apparemment, toutes les fonctionnalités disponibles pour PHP le sont aussi sous Python. Ou bien je me trompe ?

              Par contre du côté de cURL, je ne suis pas sûr. Après quelques recherches sur Google, il semble que c'est une implémentation, disponible sur certaines versions de Python et je n'ai trouvé personne qui semblait s'en servir pour récupérer le contenu d'une page. Est-ce que cURL sous Python est aussi puissant que sous PHP ?

              Toutes ces questions car je ne veux pas me lancer dans l'apprentissage d'un langage si il ne peut pas me répondre à mes besoins.

              Merci d'avance pour vos réponses et @+
              • Partager sur Facebook
              • Partager sur Twitter
                24 juillet 2011 à 4:31:16

                Avant de chercher du côté de cURL, regarde la lib standard Python, perso j'y ai toujours trouvé ce dont j'avais besoin niveau réseau sans avoir besoin de taper dans les libs externes.

                Et tu peux aussi arrêter de perdre ton temps à douter à ce point, Python est un langage complet, et ton projet n'est pas encore assez complexe pour justifier tant de précautions.
                • Partager sur Facebook
                • Partager sur Twitter

                Blond, bouclé, toujours le sourire aux lèvres...

                  24 juillet 2011 à 9:11:36

                  Ok, super ! Alors je vais bientôt me lancer dans l'apprentissage de Python. Préparez-vous à un déluge de questions :p !
                  • Partager sur Facebook
                  • Partager sur Twitter
                    25 juillet 2011 à 9:38:17

                    Bonjour,

                    encore une petite question: Imaginons que j'arrive à coder un script qui teste un lien puis se met en pause (timer) jusqu'au prochain test, tout cela sur un serveur dédié. Que se passerai-il si le serveur est down quelques instants interrompant ainsi le programme. Celui-ci se serait arrêté et n'effectuerait plus de contrôle. Y a-t-il un moyen d'être sûr que même en cas d'arrêt, de bug,... Le programme se relance de lui-même ?

                    Merci d'avance et @+
                    • Partager sur Facebook
                    • Partager sur Twitter
                      25 juillet 2011 à 10:18:32

                      Super c'est rassurant. Peux-tu me donner une fonction, une documentation, une piste stp ?

                      @+

                      [EDIT]: Ton avatar fait un peu psychopathe ! ^^
                      • Partager sur Facebook
                      • Partager sur Twitter
                      Anonyme
                        25 juillet 2011 à 10:55:08

                        urllib.request et sa fonction Request

                        Un exemple de code, ça sera plus simple pour expliquer

                        >>> import urllib.request # importation du module urllib.request
                        >>> test = urllib.request.Request("http://docs.python.org") # Test si la connection est possible
                        >>> print(test.unverifiable) # est-ce que l'url est invérifiable?
                        False # Non! Dans ce cas le serveur n'est pas down
                        


                        Citation : la doc officielle

                        unverifiable should indicate whether the request is unverifiable, as defined by RFC 2965. It defaults to False. An unverifiable request is one whose URL the user did not have the option to approve. For example, if the request is for an image in an HTML document, and the user had no option to approve the automatic fetching of the image, this should be true.



                        Apparemment ça ne fonctionne pas comme je le pense, autant utilisé un try except

                        from urllib.request import urlopen
                        from urllib.error import URLError
                        from time import sleep
                        
                        connecte = False
                        while not connecte:
                            try:
                                data = urllib.urlopen(mon_url)
                                connecte = True
                            except URLError:
                                sleep(30)
                        


                        • Partager sur Facebook
                        • Partager sur Twitter
                          25 juillet 2011 à 17:54:53

                          Lu,

                          Je ne suis pas sûr que je me suis bien fait comprendre. Apparemment, ton script teste une page web distante.
                          Ma question est de savoir ce qu'il se passerait si le serveur hébergeant le script contrôlant les liens est down. En clair, que se passe-t-il si MON hébergeur tombe en rade et redémarre ? Mon script sera interrompu, mais y a-t-il un moyen pour qu'il se relance automatiquement ?

                          Merci d'avance et @+
                          • Partager sur Facebook
                          • Partager sur Twitter
                            25 juillet 2011 à 18:04:59

                            Oui, ça peut se faire facilement en utilisant un script qui lance ton logiciel au démarrage :)
                            • Partager sur Facebook
                            • Partager sur Twitter

                            Blond, bouclé, toujours le sourire aux lèvres...

                            Anonyme
                              25 juillet 2011 à 18:06:53

                              Oui en fait la réponse était plus simple, je croyais que tu parlais du script contrôlant les liens
                              • Partager sur Facebook
                              • Partager sur Twitter
                                25 juillet 2011 à 18:15:25

                                Ok merci pour vos réponses !

                                @+
                                • Partager sur Facebook
                                • Partager sur Twitter

                                Faisabilité d'un script en Python

                                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                • Editeur
                                • Markdown