mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-09-07 00:16:57 +08:00
fix:优雅停止超时处理
This commit is contained in:
@@ -1,5 +1,7 @@
|
|||||||
import os
|
import os
|
||||||
import signal
|
import signal
|
||||||
|
import threading
|
||||||
|
import time
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import Tuple
|
from typing import Tuple
|
||||||
|
|
||||||
@@ -113,6 +115,8 @@ class SystemHelper:
|
|||||||
if has_restart_policy:
|
if has_restart_policy:
|
||||||
# 有重启策略,使用优雅退出方式
|
# 有重启策略,使用优雅退出方式
|
||||||
logger.info("检测到容器配置了自动重启策略,使用优雅重启方式...")
|
logger.info("检测到容器配置了自动重启策略,使用优雅重启方式...")
|
||||||
|
# 启动优雅退出超时监控
|
||||||
|
SystemHelper._start_graceful_shutdown_monitor()
|
||||||
# 发送SIGTERM信号给当前进程,触发优雅停止
|
# 发送SIGTERM信号给当前进程,触发优雅停止
|
||||||
os.kill(os.getpid(), signal.SIGTERM)
|
os.kill(os.getpid(), signal.SIGTERM)
|
||||||
return True, ""
|
return True, ""
|
||||||
@@ -126,6 +130,25 @@ class SystemHelper:
|
|||||||
logger.warning("降级为Docker API重启...")
|
logger.warning("降级为Docker API重启...")
|
||||||
return SystemHelper._docker_api_restart()
|
return SystemHelper._docker_api_restart()
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _start_graceful_shutdown_monitor():
|
||||||
|
"""
|
||||||
|
启动优雅退出超时监控
|
||||||
|
如果30秒内进程没有退出,则使用Docker API强制重启
|
||||||
|
"""
|
||||||
|
|
||||||
|
def monitor_thread():
|
||||||
|
time.sleep(30) # 等待30秒
|
||||||
|
logger.warning("优雅退出超时30秒,使用Docker API强制重启...")
|
||||||
|
try:
|
||||||
|
SystemHelper._docker_api_restart()
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"强制重启失败: {str(e)}")
|
||||||
|
|
||||||
|
# 在后台线程中启动监控
|
||||||
|
thread = threading.Thread(target=monitor_thread, daemon=True)
|
||||||
|
thread.start()
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _docker_api_restart() -> Tuple[bool, str]:
|
def _docker_api_restart() -> Tuple[bool, str]:
|
||||||
"""
|
"""
|
||||||
|
|||||||
Reference in New Issue
Block a user