jkjnkjkllkjjk
This commit is contained in:
@@ -1337,19 +1337,44 @@ def is_available(config: dict[str, Any], use_cache: bool = True) -> tuple[bool,
|
||||
timeout = 10.0
|
||||
|
||||
try:
|
||||
client = HydrusClient(url, access_key, timeout)
|
||||
# Lightweight probe: get services
|
||||
# Temporarily suppress error logging for health checks (expected to fail if Hydrus unavailable)
|
||||
hydrus_logger = logging.getLogger("helper.hydrus")
|
||||
original_level = hydrus_logger.level
|
||||
hydrus_logger.setLevel(logging.CRITICAL) # Suppress errors/warnings
|
||||
# Use HTTPClient directly to avoid session key logic and reduce retries
|
||||
# This prevents log spam when Hydrus is offline (avoiding 3 retries x 2 requests)
|
||||
from helper.http_client import HTTPClient
|
||||
|
||||
probe_url = f"{url.rstrip('/')}/get_services"
|
||||
|
||||
headers = {}
|
||||
if access_key:
|
||||
headers["Hydrus-Client-API-Access-Key"] = access_key
|
||||
|
||||
# Suppress HTTPClient logging during probe to avoid "Request failed" logs on startup
|
||||
http_logger = logging.getLogger("helper.http_client")
|
||||
original_level = http_logger.level
|
||||
http_logger.setLevel(logging.CRITICAL)
|
||||
|
||||
try:
|
||||
_ = client.get_services()
|
||||
_HYDRUS_AVAILABLE = True
|
||||
_HYDRUS_UNAVAILABLE_REASON = None
|
||||
return True, None
|
||||
# Use retries=1 (single attempt, no retry) to fail fast
|
||||
with HTTPClient(timeout=timeout, retries=1, headers=headers, verify_ssl=False) as http:
|
||||
try:
|
||||
response = http.get(probe_url)
|
||||
if response.status_code == 200:
|
||||
_HYDRUS_AVAILABLE = True
|
||||
_HYDRUS_UNAVAILABLE_REASON = None
|
||||
return True, None
|
||||
else:
|
||||
# Even if we get a 4xx/5xx, the service is "reachable" but maybe auth failed
|
||||
# But for "availability" we usually mean "usable".
|
||||
# If auth fails (403), we can't use it, so return False.
|
||||
reason = f"HTTP {response.status_code}: {response.reason_phrase}"
|
||||
_HYDRUS_AVAILABLE = False
|
||||
_HYDRUS_UNAVAILABLE_REASON = reason
|
||||
return False, reason
|
||||
except Exception as e:
|
||||
# This catches connection errors from HTTPClient
|
||||
raise e
|
||||
finally:
|
||||
hydrus_logger.setLevel(original_level)
|
||||
http_logger.setLevel(original_level)
|
||||
|
||||
except Exception as exc:
|
||||
reason = str(exc)
|
||||
_HYDRUS_AVAILABLE = False
|
||||
|
||||
Reference in New Issue
Block a user