What is the use of PYTHONUNBUFFERED in docker file?

I was watching a tutorial to dockerize my django application. I did not understand why we use PYTHONUNBUFFERED as environment variable in DockerFile.

Can you please help?


Solution 1:

Setting PYTHONUNBUFFERED to a non empty value ensures that the python output is sent straight to terminal (e.g. your container log) without being first buffered and that you can see the output of your application (e.g. django logs) in real time.

This also ensures that no partial output is held in a buffer somewhere and never written in case the python application crashes.

References:

  • https://docs.python.org/3/using/cmdline.html#envvar-PYTHONUNBUFFERED
  • https://alphacoder.xyz/dockerizing-django/
  • https://towardsdatascience.com/how-to-contain-your-first-django-in-docker-and-access-it-from-aws-fdb0081bdf1d

Solution 2:

PYTHONUNBUFFERED non empty value force the stdout and stderr streams to be unbuffered. This option has no effect on the stdin stream