Мы используем многопоточность Python (с привязкой к вводу / выводу) для наших приложений. Из основного / родительского потока мы создаем несколько дочерних потоков (несколько хостов [application / web] для развертывания в каждом потоке) и ожидаем, когда они завершат использование .join () в основном потоке. Мы также используем некоторые команды пакета Fabric, чтобы запросить ввод данных пользователем, следует ли продолжить развертывание или нет в случае ошибки по какой-либо причине.
Постановка проблемы:
Так как мы используем многопоточность, все дочерние потоки записывают сообщения в вывод терминала (stdout), и, таким образом, ошибки одного потока на экране перекрываются сообщениями других потоков, и трудно прочесать консоль / терминал, чтобы увидеть, что поток имеет сбои.
Что может быть лучшим способом собрать все этапы сбоя в развертывании из всех потоков вместе и отобразить их все сразу на выходе консоли / терминала?
Сложность, с которой я сталкиваюсь, заключается в том, как взаимодействовать с дочерними потоками, в то время как в основном потоке мы просто ждем их завершения (если есть какие-либо интерактивные вопросы пользователя фабрики, тогда введите y / n на основе нашего решения о сбое) .