Partage
  • Partager sur Facebook
  • Partager sur Twitter

Action lors du kill du processus

Sujet résolu
Anonyme
    29 juillet 2011 à 20:39:07

    Bonjours,

    J'aimerais savoir si il était possible d'executer une action lorsque l'on kill le processus

    Du genre lorsque je kill mon processus fichier.pyw que fichier.pyw exectute une action et s'arrete


    Car, j'aimerais créer une page affichant l'état du serveur

    Je voulais passer via php pour vérifier si le processus etait present ou non mais, je ne trouve pas comment faire. je me suis donc rabattue sur autre chose

    Lors du lancement, le python ouvre une page phph (via url) avec la variable GET "?etat=ON" => Php traite la page et met en BDD que le serveur est ON.

    Lors de l’arrêt (via kill) python ouvre une page (via url) avec la variable GET "?etat=OFF" => Php traite la page et met en BDD que le serveur est OFF.
    Une autre page affiche l'état suivant la BDD.


    Mais, je ne vois pas comment faire exécuter une action au moment du kill..

    Une tel chose est elle possible ?

    Cordialement,
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      29 juillet 2011 à 20:44:55

      Je ne sais pas si j'ai bien compris, mais je te propose Atexit qui permet d'exécuter une action lorsque le programme se termine.
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        29 juillet 2011 à 20:47:21

        Je pense que Atexit fera l'affaire, merci =)
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          30 juillet 2011 à 20:47:21

          En fait non, j'ai regarder, mais ca ne fait pas ce que je veut...

          En gros,

          j'aimerais que lorsque je kill le processus python, il execute une action

          Comme avec keyboard interrupt => Si keyboard interrupt je fait une action pour exit

          Bah la, j'aimerais pareil mais, avec kill du processus

          Si kill du processus : action puis exit
          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            30 juillet 2011 à 21:27:20

            Tu kill comment, à l'aide de quoi? un code?
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              30 juillet 2011 à 22:55:38

              Je kill tout simplement via la console

              kill pid ^_^
              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                30 juillet 2011 à 23:19:15

                Je ne pense pas que se soit faisable de cette façon, il faut pouvoir détecter le kill. Dans ton cas faudrait faire un script bash, mais là je touche pas.
                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  30 juillet 2011 à 23:23:34

                  Ah... /me va devoir utiliser sa fonction /stop alors
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Anonyme
                    30 juillet 2011 à 23:28:41

                    Sinon tu crées ton process avec le module subprocess et tu le kill quand tu le souhaites, je te laisse chercher sa doc
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Anonyme
                      31 juillet 2011 à 13:23:54

                      Sinon, je pense a un autre truc, créer un 2eme script python qui lui va vérifier si le premier est actif, si oui, on ne fait rien, si non, on outre la page

                      Possible a faire ?
                      • Partager sur Facebook
                      • Partager sur Twitter
                      Anonyme
                        31 juillet 2011 à 13:26:20

                        Oui c'est ce que je te propose avec subprocess
                        • Partager sur Facebook
                        • Partager sur Twitter
                          31 juillet 2011 à 14:24:32

                          Allo ? Je viens de te donner une solution sur un plateau d'argent, j'écris pas assez gros ?
                          Allez, un exemple en prime.

                          import signal, webbrowser, sys
                          
                          def sigterm_handler(*args, **kwargs):
                              webbrowser.open("http://www.tonsite.com/?etat=OFF")
                              sys.exit()
                          
                          signal.signal(signal.SIGTERM, sigterm_handler)
                          
                          • Partager sur Facebook
                          • Partager sur Twitter
                          yjltg.
                          Anonyme
                            31 juillet 2011 à 16:17:13

                            J'était pas repasser sur le forum mais de toute manière, ca ne marche pas.


                            Mais, la, j'utilise une commande via le chat pour stopper le serveur (donc j'arrive a ouvrir l'url en même temp) sauf que j'utilise exit(). Le script n'a donc plus aucun effet mais le processus est toujours en serveur (meme si le script ne fait plus rien).

                            Existe il une commande pour auto-killer le script ?
                            • Partager sur Facebook
                            • Partager sur Twitter
                            Anonyme
                              31 juillet 2011 à 18:45:24

                              Quand on tue un processus, on ordonne à l'OS de mettre un terme immédiatement au processus. C'est ce qui s'appelle arrêter un programme à l'arrache. C'est pas bien, parce que le programme n'a pas le temps de finir ce qu'il était entrain de faire, il ne vide pas la RAM, ne ferme pas les fichiers, etc... En bref, à moins d'être dans un cas de force majeur, il ne faut pas arrêter des programme ainsi.
                              • Partager sur Facebook
                              • Partager sur Twitter
                                31 juillet 2011 à 18:52:32

                                Citation : PsycoPy

                                Quand on tue un processus, on ordonne à l'OS de mettre un terme immédiatement au processus. C'est ce qui s'appelle arrêter un programme à l'arrache. C'est pas bien, parce que le programme n'a pas le temps de finir ce qu'il était entrain de faire, il ne vide pas la RAM, ne ferme pas les fichiers, etc... En bref, à moins d'être dans un cas de force majeur, il ne faut pas arrêter des programme ainsi.



                                Pas forcément. Sous les systèmes Unix en tout cas, tuer un processus avec la commande kill peut être très propre, puisque par défaut cette commande envoie un signal SIGTERM, qui demande gentillement à l'application de quitter. Si tu es sous Linux, tu peux avoir une liste des signaux en tapant "kill -l".
                                • Partager sur Facebook
                                • Partager sur Twitter
                                yjltg.
                                Anonyme
                                  31 juillet 2011 à 19:25:24

                                  Je sais très bien comment tuer un processus via linux mais, via python, comment s'auto killer ?
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    31 juillet 2011 à 21:30:01

                                    from subprocess import Popen
                                    from os import getpid
                                    Popen(["kill", str(getpid())])
                                    
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                    yjltg.
                                    Anonyme
                                      1 août 2011 à 13:23:02

                                      Nickel tout marche merci beaucoup (au passage, je n'ai pas envie d'ouvrir un sujet pour cela, mais comment compter le nombre de ligne retournée par une requette select avec MySQLdb ?)

                                      Cordialement,
                                      • Partager sur Facebook
                                      • Partager sur Twitter

                                      Action lors du kill du processus

                                      × 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