Как исправить подпроцесс. Открыть блокировку ввода - PullRequest
0 голосов
/ 21 апреля 2019

У меня есть скрипт, который отображает меню, которое предлагает опции для записи и загрузки прямых трансляций и видео.Меню настроено так:

Menu

1) Record
2) Download
3) ...

Choose your option: ...

Скрипт вызывает несколько функций, расположенных в отдельных скриптах, для запроса, анализа, записи или загрузки потоков.Проблема в том, что при вызове функции записи subprocess.Popen блокирует мое меню до тех пор, пока не закончится поток.Я полагаю, это связано с функцией, требующей все stdin?Как предотвратить блокировку меню?

Я пытался использовать опцию подпроцесса stdin=open(os.devnull).Это не заблокирует меню, но приведет к процессу зомби после завершения потока.Использование потоков, таких как Thread(target=record.record,args=[json_data,ua_ffmpeg,username,id]).start(), не работает.

menu.py

import functions.record as record
  ...
  record.record(json_data,ua_ffmpeg,username,id)
  ...

record.py

  def record(json_data,ua_ffmpeg,username,id):
    ...
    subprocess.Popen('ffmpeg -icy 0 -headers "%s" -i %s -c copy -loglevel quiet videos/%s/livestreams/%s.ts' % (ua_ffmpeg, hls_url, username, id), shell=True)

Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...