Log messages written from a helper thread appear in the wrong notebook cell (regression)
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 58/100
Piste de recherche
Exécutez l’exemple minimal à trois cellules avec ipykernel 6.28.0 et 6.29.0, en vous concentrant sur Logger.write_from_queue, Logger.log et le sink sys.stderr. Suivez la manière dont la sortie du thread auxiliaire est associée aux cellules du notebook. Le travail est terminé lorsque les messages de la cellule 3 et des cellules suivantes apparaissent dans la cellule qui leur correspond, plutôt que dans la cellule d’initialisation du logger.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
I recently found that, with some configurations, log messages emitted by Loguru would appear in the wrong Jupyter notebook cell: namely, the cell that initialized the logger, rather than the cell that was responsible for the log message. I opened Delgan/loguru#1427 to address this, but have since closed it, since the issue appears to be a regression in ipykernel, not in Loguru itself.
The problem appears for all versions of Loguru, but only for ipykernel >= 6.29. It is confined to the case where the logger is configured to write messages using a separate helper thread, which is useful when logging from multiple threads simultaneously. A minimal working example that illustrates the issue without the use of Loguru is the following:
(cell 1)
import sys
import multiprocessing
import threading
class Logger:
def __init__(self, sink):
self.sink = sink
self.queue = multiprocessing.SimpleQueue()
self.lock = threading.Lock()
self.thread = threading.Thread(target=self.write_from_queue, daemon=True)
self.thread.start()
def write_from_queue(self):
while True:
message = self.queue.get()
with self.lock:
self.sink.write(message)
def log(self, message):
self.queue.put(message)
(cell 2)
logger = Logger(sink=sys.stderr)
(cell 3)
logger.log("a message")
With ipykernel 6.28.0, the log message appears under cell 3, as intended, but with 6.29.0, it appears under cell 2 instead, and subsequent messages logged using the same logger will always appear under cell 2.
(Note: I tested with Jupyter Notebook 7.5.0 and Python 3.12.11 on Ubuntu 24.04.)
- Langage dominant
- Python
- Étoiles
- 734
- Forks
- 411
- Merge moyen
- 1 j 11 h
- PR mergées (30 j)
- 12
Préparer son environnement
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de ipython/ipykernel
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 72/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 4/5 3-5 jours Accessibilité débutants 48/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 4/5 3-5 jours Accessibilité débutants 68/100
ipython/ipykernel#1554 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Interrupt on swallowed `KeyboardInterrupt` exceptions (`SIGINT`) when pressing twice (within 5 seconds)Peut-être à nouveau libre @Carreau l’a pris il y a 30 jours, et aucune pull request n’est ouverte. Ouverte
ipython/ipykernel#1550 · 1 commentaire · 1 réaction · 1 personne assignée ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 3/5 1-2 jours Accessibilité débutants 66/100
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de ipython/ipykernel
Issues similaires
-
good first issue
Difficulté 2/5 1-3 heures Accessibilité débutants 88/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 88/100
vllm-project/vllm-metal#822 ·
Les mainteneurs répondent en général sous 1 jour
-
vector-store
Difficulté 1/5 1-3 heures Accessibilité débutants 90/100
mem0ai/mem0#7461 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
[Bug]: chunk_span_bounds and _validated_chunk_spans reject Pydantic models ChunkSpan and AudioFileOuverte
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
BasedHardware/omi#19047 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 88/100
Les mainteneurs répondent en général sous 1 jour