Rediriger les retraits python à travers Pygments

Mon application est appelée depuis run.py J’ai installé Pygments et j’aimerais redirect la sortie de Python afin qu’au fur et à mesure des retraits, ils soient formatés dans un format plus facile à lire.

C’est la commande que j’ai essayée, python run.py 2>&1 | pygmentize -l py python run.py 2>&1 | pygmentize -l py

Redirection à la fois stdout et stderr via pygmentize. La documentation pygmentize indique qu’elle sera lue à partir de stdin si aucun fichier n’est fourni, “Si aucun fichier d’entrée n’est fourni, utilisez stdin, si -o n’est pas donné, utilisez stdout.”

Cependant, lorsque je redirige comme cela, aucune sortie – erreurs ou instructions de journal ou autre – n’est transmise à mon terminal.

Lorsque je lance ma commande sans redirect sa sortie vers pygmentize, c’est-à-dire python run.py 2>&1 j’obtiens cette sortie:

 INFO:werkzeug: * Running on http://0.0.0.0:5000/ INFO:werkzeug: * Restarting with reloader 

Aucune suggestion?

pygmentize lit l’intégralité du stream d’entrée lors de la lecture de stdin et n’envoie que tout si le stream d’entrée est fermé, de sorte que vous n’obtiendrez une sortie que si votre premier processus est terminé.

J’ai peur qu’il y ait peu de choses que vous puissiez faire à ce sujet. Si vous souhaitez formater un stream continu, vous pouvez seulement essayer d’écrire votre propre enveloppe autour de pygments qui lit le stream d’entrée en morceaux et le transmet aux pygments.

La raison pour laquelle vous ne voyez aucune sortie maintenant est que vous utilisez probablement Ctrl + C pour arrêter votre processus dans le shell, mais cela détruit les deux processus. Si vous utilisez kill pour terminer le processus du serveur, vous devriez voir au moins les lignes que vous avez mentionnées ci-dessus en passant par pygments.