Interruption script python

Le
Alain BARTHE
Bonsoir,

J'ai écrit un scipt Python qui scrute une arborescence de fichiers, pour
rechercher des dépendances entre fichiers.

Pour chaque journée depuis 2000/01/01 à aujourd'hui, il doit vérifier si
des fichiers de données sources d'une application sont plus récents que
les fichiers destinations (fichiers traités par l'application).

Il est constitué d'une boucle principale utilisant le module datetime
pour itérer sur les dates, de la fonction glob.glob() pour rechercher
les fichiers pour cette date, et de os.path.getmtime() pour comparer les
dates de maj des fichiers.

Mon problème est que ce script est assez long (2/3 minutes) et que je
n'arrive pas à l'interrompre par un Ctrl-C.

Y a-t-il un moyen sous Python pour modifier la prise en compte du Ctrl-C
afin qu'il plante mon application ?

Est-il éventuellement possible d'intercepter proprement cette interruption ?

Pour info, je suis Python 2.5 sous Solaris 9 et Linux FC6.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Alain BARTHE
Le #16405141
Alain BARTHE a écrit :
Bonsoir,

J'ai écrit un scipt Python qui scrute une arborescence de fichiers, pour
rechercher des dépendances entre fichiers.

Pour chaque journée depuis 2000/01/01 à aujourd'hui, il doit vérifier si
des fichiers de données sources d'une application sont plus récents que
les fichiers destinations (fichiers traités par l'application).

Il est constitué d'une boucle principale utilisant le module datetime
pour itérer sur les dates, de la fonction glob.glob() pour rechercher
les fichiers pour cette date, et de os.path.getmtime() pour comparer les
dates de maj des fichiers.

Mon problème est que ce script est assez long (2/3 minutes) et que je
n'arrive pas à l'interrompre par un Ctrl-C.

Y a-t-il un moyen sous Python pour modifier la prise en compte du Ctrl-C
afin qu'il plante mon application ?

Est-il éventuellement possible d'intercepter proprement cette
interruption ?

Pour info, je suis Python 2.5 sous Solaris 9 et Linux FC6.




Problème résolu.

J'ai regardé la doc de la fonction signal.signal() qui permet
d'intercepter les signaux Unix comme le Ctrl-C, et il y est dit que le
Ctrl-C génère bien une exception de type KeyboardInterrupt.

Mon problème provenait de mon script qui faisait une mauvaise gestion
des exceptions, et mon programme ne s'interrompait pas.
Bruno Desthuilliers
Le #16405631
Alain BARTHE a écrit :
Alain BARTHE a écrit :
Bonsoir,

J'ai écrit un scipt Python qui scrute une arborescence de fichiers,
pour rechercher des dépendances entre fichiers.

Pour chaque journée depuis 2000/01/01 à aujourd'hui, il doit vérifier
si des fichiers de données sources d'une application sont plus récents
que les fichiers destinations (fichiers traités par l'application).

Il est constitué d'une boucle principale utilisant le module datetime
pour itérer sur les dates, de la fonction glob.glob() pour rechercher
les fichiers pour cette date, et de os.path.getmtime() pour comparer
les dates de maj des fichiers.

Mon problème est que ce script est assez long (2/3 minutes) et que je
n'arrive pas à l'interrompre par un Ctrl-C.

Y a-t-il un moyen sous Python pour modifier la prise en compte du
Ctrl-C afin qu'il plante mon application ?

Est-il éventuellement possible d'intercepter proprement cette
interruption ?

Pour info, je suis Python 2.5 sous Solaris 9 et Linux FC6.




Problème résolu.

J'ai regardé la doc de la fonction signal.signal() qui permet
d'intercepter les signaux Unix comme le Ctrl-C, et il y est dit que le
Ctrl-C génère bien une exception de type KeyboardInterrupt.

Mon problème provenait de mon script qui faisait une mauvaise gestion
des exceptions, et mon programme ne s'interrompait pas.



J'allais te répondre un truc du genre "il y a probablement un except
attrape-tout ne relançant pas l'exception dans ton code".
Alain BARTHE
Le #16405931
Bruno Desthuilliers a écrit :
Alain BARTHE a écrit :
Alain BARTHE a écrit :
Bonsoir,

J'ai écrit un scipt Python qui scrute une arborescence de fichiers,
pour rechercher des dépendances entre fichiers.

Pour chaque journée depuis 2000/01/01 à aujourd'hui, il doit vérifier
si des fichiers de données sources d'une application sont plus
récents que les fichiers destinations (fichiers traités par
l'application).

Il est constitué d'une boucle principale utilisant le module datetime
pour itérer sur les dates, de la fonction glob.glob() pour rechercher
les fichiers pour cette date, et de os.path.getmtime() pour comparer
les dates de maj des fichiers.

Mon problème est que ce script est assez long (2/3 minutes) et que je
n'arrive pas à l'interrompre par un Ctrl-C.

Y a-t-il un moyen sous Python pour modifier la prise en compte du
Ctrl-C afin qu'il plante mon application ?

Est-il éventuellement possible d'intercepter proprement cette
interruption ?

Pour info, je suis Python 2.5 sous Solaris 9 et Linux FC6.




Problème résolu.

J'ai regardé la doc de la fonction signal.signal() qui permet
d'intercepter les signaux Unix comme le Ctrl-C, et il y est dit que le
Ctrl-C génère bien une exception de type KeyboardInterrupt.

Mon problème provenait de mon script qui faisait une mauvaise gestion
des exceptions, et mon programme ne s'interrompait pas.



J'allais te répondre un truc du genre "il y a probablement un except
attrape-tout ne relançant pas l'exception dans ton code".



C'était exactement ça.
Publicité
Poster une réponse
Anonyme