-
-
Notifications
You must be signed in to change notification settings - Fork 32.2k
An article on Python 3 stdout and stderr output buffering #85621
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
It is hard to find info why Python 3 buffers stdout/stderr. The buffering causes problems when debugging Python apps in Docker and Kubernetes, and it is unclear if it is Python 3 who starts to buffer stdout if no tty is attached, it is Docker, or it is Kubernetes. The only bit of info that could be searched is the description of -u option https://docs.python.org/3.8/using/cmdline.html?#cmdoption-u which is not linked to any article. The
However, I don't understand what is the text layers of stdout. And there is no description of behaviour when the output is not attached, and when the output is redirected. |
Maybe you’ll get some explanation or pointers on python-list. Or were you volunteering to write something? |
Not sure I can volunteer - need to find a sustenance ASAP. But given that nothing moved in this direction over the past 6 months, another week spent not writing this stuff won't change anything. In any case it would start with the following problem - "Logs don't show up if running in Kubernetes" - bottlepy/bottle#1130 I've encountered it a 3 days session on adding CI to my favourite cheat sheet server chubin/cheat.sh@10bfaab and I am still not sure I am right. That's why I want to read something about it. |
I don't think that waiting another six months is going to make this happen either. Maybe you can petition realpython.com to publish something about this. Honestly it sounds like this ties too many different topics together to easily fit in the library docs: in order to make a large number of different use cases easy, how I/O works under the hood in Python is truly complex. So I'm going to close this rather than have it add to our issue count. |
To avoid too much outside reference, the commit message I am unsure of is this.
I am not sure.
|
I don't know anything about Docker, so I can't help you there. Please don't reopen the issue again. |
I didn't reopen the issue explicitly. Just pressed the submit button again when the notification about edited bug appeared. |
The point is that without a clear description of buffering in Python 3, it is impossible to understand what goes when Python is wrapped by Docker, supervisord, redirected to file etc. |
If you don't even know whether it's Python, Docker or Kubernetes you really need to ask somewhere else. Plenty of user groups around. Python detects tty using the standard UNIX isatty() function. To a tty we always get line buffering. To a file we use a larger buffer. For more details see the source at Line 1942 in 4660597
|
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
bugs.python.org fields:
The text was updated successfully, but these errors were encountered: