Reinforce zendriver startup for Synology Docker (extended timeouts and logging)

This commit is contained in:
2026-01-19 21:42:03 +09:00
parent 7abaaa8d38
commit cf4f7ab7b4
2 changed files with 29 additions and 21 deletions

View File

@@ -1,5 +1,5 @@
title: "애니 다운로더" title: "애니 다운로더"
version: 0.7.10 version: 0.7.11
package_name: "anime_downloader" package_name: "anime_downloader"
developer: "projectdx" developer: "projectdx"
description: "anime downloader" description: "anime downloader"

View File

@@ -17,20 +17,28 @@ from http.server import HTTPServer, BaseHTTPRequestHandler
from threading import Thread, Lock from threading import Thread, Lock
from typing import Any, Optional, Dict, List, Type, cast from typing import Any, Optional, Dict, List, Type, cast
import zendriver as zd import zendriver as zd
import datetime # Added for datetime.now()
import logging # Added for logging setup
# 터미널 및 파일로 로그 출력 설정 # 터미널 및 파일로 로그 출력 설정
LOG_FILE: str = "/tmp/zendriver_daemon.log" LOG_FILE: str = "/tmp/zendriver_daemon.log"
def log_debug(msg: str) -> None: # 로그 설정
"""타임스탬프와 함께 로그 출력 및 파일 저장""" def log_debug(msg):
timestamp: str = time.strftime("%Y-%m-%d %H:%M:%S") timestamp = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
formatted_msg: str = f"[{timestamp}] {msg}" log_msg = f"[{timestamp}] {msg}"
print(formatted_msg, file=sys.stderr) print(log_msg)
try: with open(LOG_FILE, "a", encoding="utf-8") as f:
with open(LOG_FILE, "a", encoding="utf-8") as f: f.write(log_msg + "\n")
f.write(formatted_msg + "\n")
except Exception: # Zendriver 내부 로그 연동
pass class ZendriverLogHandler(logging.Handler):
def emit(self, record):
log_debug(f"[ZendriverLib] {record.levelname}: {record.getMessage()}")
zd_logger = logging.getLogger("zendriver")
zd_logger.setLevel(logging.DEBUG)
zd_logger.addHandler(ZendriverLogHandler())
DAEMON_PORT: int = 19876 DAEMON_PORT: int = 19876
browser: Optional[Any] = None browser: Optional[Any] = None
@@ -190,18 +198,15 @@ async def ensure_browser() -> Any:
import platform import platform
uid = os.getuid() if hasattr(os, 'getuid') else 'win' uid = os.getuid() if hasattr(os, 'getuid') else 'win'
log_debug(f"[ZendriverDaemon] Environment: Python {sys.version.split()[0]} on {platform.system()}") log_debug(f"[ZendriverDaemon] Environment: Python {sys.version.split()[0]} on {platform.system()} (UID: {uid})")
browser_args = [ browser_args = [
"--no-sandbox", "--no-sandbox",
"--disable-setuid-sandbox", "--disable-setuid-sandbox",
"--disable-dev-shm-usage", "--disable-dev-shm-usage",
"--disable-gpu", "--disable-gpu",
"--no-first-run", "--disable-software-rasterizer",
"--no-service-autorun", "--remote-allow-origins=*",
"--password-store=basic",
"--mute-audio",
"--disable-notifications",
"--disable-background-networking", "--disable-background-networking",
"--disable-background-timer-throttling", "--disable-background-timer-throttling",
"--disable-backgrounding-occluded-windows", "--disable-backgrounding-occluded-windows",
@@ -236,12 +241,15 @@ async def ensure_browser() -> Any:
try: try:
log_debug(f"[ZendriverDaemon] Trying browser at: {exec_path}") log_debug(f"[ZendriverDaemon] Trying browser at: {exec_path}")
start_time_init = time.time() start_time_init = time.time()
log_debug(f"[ZendriverDaemon] Launching browser: {exec_path} (Sandbox: False, Timeout: 1.0s, Tries: 30)")
browser = await zd.start( browser = await zd.start(
headless=True, headless=True,
browser_executable_path=exec_path, browser_executable_path=exec_path,
sandbox=False, sandbox=False,
user_data_dir=user_data_dir, user_data_dir=user_data_dir,
browser_args=browser_args browser_args=browser_args,
browser_connection_timeout=1.0,
browser_connection_max_tries=30
) )
log_debug(f"[ZendriverDaemon] Browser started successfully in {time.time() - start_time_init:.2f}s using: {exec_path}") log_debug(f"[ZendriverDaemon] Browser started successfully in {time.time() - start_time_init:.2f}s using: {exec_path}")
return browser return browser