Creation d'un thread dans django, comment récuperer les erreurs

Le
octobre
Bonjour,

Pour une tache couteuse en ressources, je crée un thread séparé lors
de la requête et ensuite je le surveille depuis la première requête.
Parfois le thread ne fonctionne pas (erreur). Comment puis je
rediriger la sortie erreur de mon thread vers un fichier ? merci !


t = threading.Thread(target=sender_thread,
args=[])
t.start()

def sender_thread():
# ici le catch des erreurs dans un fichier
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
Alex Marandon
Le #6640471
octobre wrote:
Pour une tache couteuse en ressources, je crée un thread séparé lors
de la requête et ensuite je le surveille depuis la première requête.
Parfois le thread ne fonctionne pas (erreur). Comment puis je
rediriger la sortie erreur de mon thread vers un fichier ? merci !


Bonjour,

Les erreurs sont envoyées à l'objet sys.stderr. Tu peux le remplacer par
l'objet de ton choix. Cet objet devra implémenter une méthode write.
Coup de chance : les objets fichier propose une telle méthode.

Exemple:

$ python -c "import sys; sys.stderr = open('mes_erreurs','a'); 1/0"
$ cat mes_erreurs
Traceback (most recent call last):
File "<string>", line 1, in <module>
ZeroDivisionError: integer division or modulo by zero

J'espère que cela réponds à ta question.

octobre
Le #6645991
On 16 mai, 19:02, Alex Marandon
octobre wrote:
Pour une tache couteuse en ressources, je crée un thread séparé lo rs
de la requête et ensuite je le surveille depuis la première requêt e.
Parfois le thread ne fonctionne pas (erreur). Comment puis je
rediriger la sortie erreur de mon thread vers un fichier ? merci !


Bonjour,

Les erreurs sont envoyées à l'objet sys.stderr. Tu peux le remplacer p ar
l'objet de ton choix. Cet objet devra implémenter une méthode write.
Coup de chance : les objets fichier propose une telle méthode.

Exemple:

$ python -c "import sys; sys.stderr = open('mes_erreurs','a'); 1/0"
$ cat mes_erreurs
Traceback (most recent call last):
   File "<string>", line 1, in <module>
ZeroDivisionError: integer division or modulo by zero

J'espère que cela réponds à ta question.


Génial ! J'avais utilisé un gestionnaire d'exception à la place, mais
ta solution convient mieux


Publicité
Poster une réponse
Anonyme