'ffmpeg rtsp url .... playlist.m3u8',
stdout=subprocess.PIPE,
shell=True, preexec_fn=os.setsid,
)
Этот процесс должен длиться один день.
Я сделал таймер для уничтожения процессов
def wait_timeout(self, proc, seconds):
"""Wait for a process to finish, or raise exception after timeout"""
start = time.time()
end = start + seconds
interval = min(seconds / 1000.0, .25)
while True:
result = proc.poll()
if result is not None:
return result
if time.time() >= end:
os.killpg(os.getpgid(proc.pid), signal.SIGTERM) # killing the process
time.sleep(interval)
Если мой проект перестанет работать, процесс не будет уничтожен, и он будет работать непрерывно. Как я могу сделать, чтобы процесс был убит через 24 часа, независимо от того, запущен проект или нет?
Не проще эту логику в самом процессе прописать?
Ну ты можешь в процессе запускать не команду ffmpeg'a, а другой питонячий скрипт, который будет запускать уже коменду ффмпега, а в отдельном потоке считать время до закрытия
поток работает в нутри проекта? если проект перестанет работать, поток будет работать?
Какого проекта? Процесса
Если умирает родительский процесс, то умирают и дочерние. Я вот кстати не уверен, что ffmpeg 100% станет дочерним процессом. По идее должен, но там напряженные отношения с запуском консольных утилит у питона
> Если умирает родительский процесс, то умирают и дочерние. Bullshit
@alt_crypton можете помогать с этим?
и да и нет, если убить родительский процесс то с ним умрут только зомби процессы которые от его потомков остались (хотя фактически зомби и так мертвы от них там только срутктура в системной таблице процессов висит и все), ну короче зомби из таблицы процессов удалятся, а вот живые потомки убитого родителя останутся и не че с ними не случится
Обсуждают сегодня