supervisord logs don't show my output
Python output is buffered. Setting the environment variable PYTHONUNBUFFERED=1
in you supervisord.conf
will disable buffering and show log messages sooner:
[program:x]
environment = PYTHONUNBUFFERED=1
or add the -u
command-line switch to python
command:
[program:x]
command = python -u file.py
Alternatively you can flush the sys.stdout
handler explicitly:
sys.stdout.flush()
On python 3.3 and up, you can add the flush=True
parameter to have the function do this for you:
print(something, flush=True)
You can run your program like this:
python -u file.py
this will produce unbuffered output