Мое приложение python состоит из основной программы и нескольких модулей. Каждый модуль содержитОтдельное имя регистратора для каждого экземпляра приложения
import logging
log = logging.getLogger('myapp.mymodule')
на глобальном уровне. Обработчики и другие элементы инициализируются в основной программе, и обычно все сообщения отправляются в syslog.
Теперь я хочу запустить несколько экземпляров приложения (файл конфигурации с именем экземпляра можно указать в качестве параметра командной строки). Возникает вопрос: как передать имя экземпляра каждому импортированному модулю? Я хочу, чтобы имя регистратора выглядело как «myappinstance.mymodule» или «myapp.instance.module». И я не хочу связываться с разбором конфигурационного файла в каждом модуле, потому что для этого потребуется жестко настроенный путь конфигурации.
Я не думаю, что это решит вашу проблему. Существует гоночное условие для передачи имени экземпляра в модули путем установки переменных среды. Что делать, если несколько экземпляров запускаются одновременно? – iamamac
Переменные окружения не являются глобальными (os-wide), они наследуются по дереву процессов. Я могу одновременно запустить два экземпляра main.py, и если каждый из них задает конкретную переменную evnironment, он будет распространяться только на дочерние процессы. – Max