mirror of
				https://github.com/blakeblackshear/frigate.git
				synced 2025-10-27 10:52:11 +01:00 
			
		
		
		
	allow logger daemon process to be killed with the main thread, thus allowing us to continue logging during shutdown
This commit is contained in:
		
							parent
							
								
									3a171d19e3
								
							
						
					
					
						commit
						482399d82f
					
				@ -1,10 +1,8 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  "name": "Frigate Dev",
 | 
					  "name": "Frigate Dev",
 | 
				
			||||||
  "context": "..",
 | 
					 | 
				
			||||||
  "dockerComposeFile": "../docker-compose.yml",
 | 
					  "dockerComposeFile": "../docker-compose.yml",
 | 
				
			||||||
  "service": "dev",
 | 
					  "service": "dev",
 | 
				
			||||||
  "workspaceFolder": "/opt/frigate",
 | 
					  "workspaceFolder": "/opt/frigate",
 | 
				
			||||||
  "shutdownAction": "stopCompose",
 | 
					 | 
				
			||||||
  "extensions": [
 | 
					  "extensions": [
 | 
				
			||||||
    "ms-python.python",
 | 
					    "ms-python.python",
 | 
				
			||||||
    "visualstudioexptteam.vscodeintellicode",
 | 
					    "visualstudioexptteam.vscodeintellicode",
 | 
				
			||||||
 | 
				
			|||||||
@ -14,6 +14,10 @@ services:
 | 
				
			|||||||
      - .:/opt/frigate:cached
 | 
					      - .:/opt/frigate:cached
 | 
				
			||||||
      - ./config/config.yml:/config/config.yml:ro
 | 
					      - ./config/config.yml:/config/config.yml:ro
 | 
				
			||||||
      - ./debug:/media/frigate
 | 
					      - ./debug:/media/frigate
 | 
				
			||||||
 | 
					      - type: tmpfs # Optional: 1GB of memory, reduces SSD/SD Card wear
 | 
				
			||||||
 | 
					        target: /tmp/cache
 | 
				
			||||||
 | 
					        tmpfs:
 | 
				
			||||||
 | 
					          size: 1000000000
 | 
				
			||||||
    ports:
 | 
					    ports:
 | 
				
			||||||
      - "1935:1935"
 | 
					      - "1935:1935"
 | 
				
			||||||
      - "5000:5000"
 | 
					      - "5000:5000"
 | 
				
			||||||
 | 
				
			|||||||
@ -13,7 +13,9 @@ from collections import deque
 | 
				
			|||||||
def listener_configurer():
 | 
					def listener_configurer():
 | 
				
			||||||
    root = logging.getLogger()
 | 
					    root = logging.getLogger()
 | 
				
			||||||
    console_handler = logging.StreamHandler()
 | 
					    console_handler = logging.StreamHandler()
 | 
				
			||||||
    formatter = logging.Formatter("%(name)-30s %(levelname)-8s: %(message)s")
 | 
					    formatter = logging.Formatter(
 | 
				
			||||||
 | 
					        "[%(asctime)s] %(name)-30s %(levelname)-8s: %(message)s", "%Y-%m-%d %H:%M:%S"
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
    console_handler.setFormatter(formatter)
 | 
					    console_handler.setFormatter(formatter)
 | 
				
			||||||
    root.addHandler(console_handler)
 | 
					    root.addHandler(console_handler)
 | 
				
			||||||
    root.setLevel(logging.INFO)
 | 
					    root.setLevel(logging.INFO)
 | 
				
			||||||
@ -27,20 +29,10 @@ def root_configurer(queue):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def log_process(log_queue):
 | 
					def log_process(log_queue):
 | 
				
			||||||
    stop_event = mp.Event()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def receiveSignal(signalNumber, frame):
 | 
					 | 
				
			||||||
        stop_event.set()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    signal.signal(signal.SIGTERM, receiveSignal)
 | 
					 | 
				
			||||||
    signal.signal(signal.SIGINT, receiveSignal)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    threading.current_thread().name = f"logger"
 | 
					    threading.current_thread().name = f"logger"
 | 
				
			||||||
    setproctitle("frigate.logger")
 | 
					    setproctitle("frigate.logger")
 | 
				
			||||||
    listener_configurer()
 | 
					    listener_configurer()
 | 
				
			||||||
    while True:
 | 
					    while True:
 | 
				
			||||||
        if stop_event.is_set() and log_queue.empty():
 | 
					 | 
				
			||||||
            break
 | 
					 | 
				
			||||||
        try:
 | 
					        try:
 | 
				
			||||||
            record = log_queue.get(timeout=5)
 | 
					            record = log_queue.get(timeout=5)
 | 
				
			||||||
        except queue.Empty:
 | 
					        except queue.Empty:
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user