В моем проекте я встречал некоторых вуду-логистов.
После прочтения следующего:
QueueHandler
QueueListener
Я разработал протоколирование в моей программе следующим образом: в основном процессе -
корневой регистратор, назначенный с помощью QueueHandler. Эта очередь прослушивается QueueListener, целью которого является обычный StreamHandler.
Моя программа в какой-то момент выполнения отправляет задачу анализа в пул процессов.
Каждому процессу пула назначается очередь, созданная в QueueHandler основного процесса, поэтому он также может отправлять записи журнала на консоль.
Замечание о моей программе - это программа на python 2, которую я вручную перенес в код Pyue 3 из QueueHandler и QueueListener.
При выполнении моей программы возникает противоречивая проблема (но в основном в ее тестах):
Программа зависает, сообщения не выводятся на консоль.
Если StreamHandler поменялся местами с FileHandler - тесты пройдут последовательно.
Вот env, который я использовал для тестирования:
интерпретатор: PyPy 5.6.0 с GCC 4.8.4
pytest версия: '3.2.3'
версия журнала: '0.5.1.2'
uname -a: Linux ip-172-31-36-72 3.13.0-74-generic # 118-Ubuntu SMP чт 17 декабря 22:52:10 UTC 2015 x86_64 x86_64 x86_64 GNU / Linux
Я считаю, что распространять репозиторий github не часто - но я извлек свою программу в очень маленький проект, который воспроизводит проблема (иногда). Не стесняйтесь проверить это:
log_voodoo
Почему это происходит? Есть какие-то решения, чтобы преодолеть это?