Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

2 réponses
Avatar
octobre
Bonjour,

Pour une tache couteuse en ressources, je cr=E9e un thread s=E9par=E9 lors
de la requ=EAte et ensuite je le surveille depuis la premi=E8re requ=EAte.
Parfois le thread ne fonctionne pas (erreur). Comment puis je
rediriger la sortie erreur de mon thread vers un fichier ? merci !


t =3D threading.Thread(target=3Dsender_thread,
args=3D[])
t.start()

def sender_thread():
# ici le catch des erreurs dans un fichier

2 réponses

Avatar
Alex Marandon
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.

Avatar
octobre
On 16 mai, 19:02, Alex Marandon wrote:
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