@qid00000000
Мало что знаю, но информацию найду в гугле

Не понятно, почему не сразу записываются логи supervisord?

Есть python скрипт, который запущен в docker контейнере и пишет в stdout. Запущено всё entrypoint'ом командой:
supervisord -n

Конфиг запуска одного из скриптов (для supervisor).
[program:main]
command = /usr/local/bin/python3 /program/main.py start
autostart = true
autorestart = true
stdout_logfile = /var/log/09.log
stderr_logfile = /var/log/09.err


Проблема: логи не пишутся сразу в файл, нужно подождать некоторое время (или пока наберётся какой-то буфер):
root@feb72dd31258:/var/log# ls -la
total 32
drwxr-xr-x 1 root root  4096 Jul  9 14:37 .
drwxr-xr-x 1 root root  4096 Jul  9 14:35 ..
-rw-r--r-- 1 root root     0 Jul  9 14:37 09.err
-rw-r--r-- 1 root root 24427 Jul  9 16:24 09.log

 . . . 

root@feb72dd31258:/var/log# ls -la
total 40
drwxr-xr-x 1 root root  4096 Jul  9 14:37 .
drwxr-xr-x 1 root root  4096 Jul  9 14:35 ..
-rw-r--r-- 1 root root     0 Jul  9 14:37 09.err
-rw-r--r-- 1 root root 32591 Jul  9 16:46 09.log


Запись в логи идет непрерывно, поэтому ожидаю, что изменения также будут записываться в лог непрерывно.

Моё предположение, что supervisord пишет в лог stdout с некоторым буфером. Из документации единственное, что бросилось в глаза это stdout_capture_maxbytes и stderr_capture_maxbytes (выставлял их в 0 не помогло).

Конфигурационный файл supervisor стандартный (который в /etc/supervisor/supervisord.conf ).

Вопрос: Почему не пишется лог файл сразу? Как сделать так, чтобы запись шла непрерывно средствами supervisord.

Примечание:
1. Не хотелось бы перенаправлять поток ввода / вывода стандартными средствами.
2. Да, есть много способов решить задачу, однако хотел бы узнать, как сделать это через конфиг supervisor и из-за чего это происходит.

UPDATE: Бывает, что установка переменной окружения помогает в некоторых случаях, про все способы сбросить кеш можно почитать тут: https://stackoverflow.com/questions/13934801/super...
  • Вопрос задан
  • 151 просмотр
Решения вопроса 1
@vitaly_il1
DevOps Consulting
попробуйте

environment = PYTHONUNBUFFERED=1

https://stackoverflow.com/questions/13934801/super...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы