Python Перезапускает конвейерный подпроцесс при разрыве трубы или Ошибке Подпроцесса

#python #subprocess #pipe

Вопрос:

Я создал скрипт на python, который использует прямые трансляции по потоковой ссылке и передает их с помощью ffmpeg для потоковой передачи в другие места назначения. Однако из-за колебаний сети или других факторов иногда один из двух подпроцессов завершается сбоем, и канал прерывается, но перезапуск его вручную решит проблему.
Интересно, есть ли способ, с помощью которого скрипт может автоматически обнаружить сломанный канал и перезапустить его автоматически? Это и есть код

 import subprocess
_streamlink_process = subprocess.Popen(('C:/Program Files (x86)/Streamlink/bin/streamlink.exe', SomeArgs), stdout=subprocess.PIPE)

_ffmpeg_process = subprocess.Popen(('ffmpeg/ffmpeg.exe', SomeOtherArgs ),stdin=_streamlink_process.stdout)
 

Я пытался запускать поток каждые 5 секунд, но это приводит к тому, что результирующий поток имеет скачки задержки.

Чего я хочу достичь:

 While True:
    if (pipe is broken!!!):
        restart the subprocesses!

 

Комментарии:

1. знаете ли вы функцию try/except в Python?