Регистрация питона при разбивке процессовPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Регистрация питона при разбивке процессов

Сообщение Anonymous »

Я реализовал пользовательский журнал. Он отлично работает в одном процессе, но я не могу справиться с сценариями, в которых процессы раздвоены. Я на Linux, и мне нужно только поддерживать эту платформу. Общий подход таково: < /p>

Код: Выделить всё

class S3Handler(logging.StreamHandler):
def __init__(self):
super().__init__(io.StringIO())
# create unique target location and counter
# counter for rotating file names

def emit(self, record):
# emit record
# if buffer is large enough: store data to file

def close(self):
# store buffer to file
< /code>
Это работает как очарование для одного процесса. Я настраиваю регистратор в файле конфигурации и использую logging.fileconfig 
, чтобы все настроить. В моем коде я использую < /p>

Код: Выделить всё

LOG = logging.getLogger(__name__)
< /code>
везде на уровне модуля. Но мой проект использует Луиджи в качестве библиотеки, которая разгибает подпроцессы, и вещи становятся немного странными: < /p>
Различные процессы используют одну и ту же «копию», поэтому они используют одно и то же уникальное целевое местоположение и будут перезаписать данные друг друга. Это имеет смысл, но, выясняя это, я также увидел неожиданное закрытие обработчиков, которые я не мог на самом деле закрепить. Я нашел _at_fork_reinit () 
, который я перезаписал. Моя реализация его создает новое уникальное целевое местоположение и свежий буфер io.stringio . Я получаю вывод для отдельного подпроцесса в отдельных файлах. Но сообщения журналов теперь «умножены»: я вижу журналы из основного процесса, отображаемых в журналах из подпроцессов. Все происходит в памяти, и это должно быть изолировано между процессами. Любой намек на то, как должен работать журналирование Python и использоваться в контексте вилки, будет высоко ценится.

Подробнее здесь: https://stackoverflow.com/questions/795 ... -processes
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»