[RESOLVIDO] Subprocess timeout

Como posso fazer um timeout nesse subprocess?

def gravacao(self, id_camera, rtsp, dir, filename, cameras_running):
    try:
        cameras_running[id_camera] = subprocess.Popen(
            ['ffmpeg', '-rtsp_transport', 'tcp', '-i', rtsp, '-acodec', 'copy', '-vcodec', 'copy',
             dir + '/' + filename], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
        print("Start recording on camera:", id_camera)
    except:
        return False

Quero que após X minutos esse processo morra. Mas não tô entendendo como usar/fazer o timeout.

Testei com:

        try:
            cameras_running[id_camera].communicate(timeout=10)
        except TimeoutError:
            cameras_running[id_camera].kill()
            cameras_running[id_camera].communicate()

Mas não funcionou, ele espera 10 segundos e não mata a gravação…

[]'s

Solução:

Passei -t 600 como parâmetro do FFMPEG.

1 curtida