mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-02-15 07:35:27 +03:00
Do not reopen stdout and stderr on fork
This is no longer necessary, since we switched to forkserver
This commit is contained in:
parent
2e432601b6
commit
32787e2789
@ -2,7 +2,6 @@ import atexit
|
|||||||
import logging
|
import logging
|
||||||
import multiprocessing as mp
|
import multiprocessing as mp
|
||||||
import os
|
import os
|
||||||
import sys
|
|
||||||
import threading
|
import threading
|
||||||
from collections import deque
|
from collections import deque
|
||||||
from logging.handlers import QueueHandler, QueueListener
|
from logging.handlers import QueueHandler, QueueListener
|
||||||
@ -53,19 +52,6 @@ def _stop_logging() -> None:
|
|||||||
log_listener = None
|
log_listener = None
|
||||||
|
|
||||||
|
|
||||||
# When a multiprocessing.Process exits, python tries to flush stdout and stderr. However, if the
|
|
||||||
# process is created after a thread (for example a logging thread) is created and the process fork
|
|
||||||
# happens while an internal lock is held, the stdout/err flush can cause a deadlock.
|
|
||||||
#
|
|
||||||
# https://github.com/python/cpython/issues/91776
|
|
||||||
def reopen_std_streams() -> None:
|
|
||||||
sys.stdout = os.fdopen(1, "w")
|
|
||||||
sys.stderr = os.fdopen(2, "w")
|
|
||||||
|
|
||||||
|
|
||||||
os.register_at_fork(after_in_child=reopen_std_streams)
|
|
||||||
|
|
||||||
|
|
||||||
# based on https://codereview.stackexchange.com/a/17959
|
# based on https://codereview.stackexchange.com/a/17959
|
||||||
class LogPipe(threading.Thread):
|
class LogPipe(threading.Thread):
|
||||||
def __init__(self, log_name: str):
|
def __init__(self, log_name: str):
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user