From 6f632d9cae45cf05f7da3017efebc6ca669138cd Mon Sep 17 00:00:00 2001 From: rewby Date: Wed, 30 Aug 2023 19:36:30 +0200 Subject: [PATCH] Add timeout to minio --- main.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/main.py b/main.py index e350174..656c0b1 100755 --- a/main.py +++ b/main.py @@ -10,9 +10,11 @@ import time from typing import Optional import urllib.parse +import certifi import click import minio import requests +import urllib3 from progress import Progress @@ -164,8 +166,23 @@ def single_impl(item_directory: pathlib.Path, ia_collection: str, ia_item_title: def create_client(): logging.info("Connecting to minio...") + cert_check = True + timeout = datetime.timedelta(seconds=30).seconds + total_timeout = datetime.timedelta(seconds=60).seconds + hclient = urllib3.PoolManager( + timeout=urllib3.util.Timeout(connect=timeout, read=timeout, total=total_timeout), + maxsize=10, + cert_reqs='CERT_REQUIRED' if cert_check else 'CERT_NONE', + ca_certs=os.environ.get('SSL_CERT_FILE') or certifi.where(), + retries=urllib3.Retry( + total=5, + backoff_factor=0.2, + backoff_max=30, + status_forcelist=[500, 502, 503, 504] + ) + ) return minio.Minio(endpoint=ep, access_key=parsed_url.username, secret_key=parsed_url.password, - secure=secure) + secure=secure, http_client=hclient) client = retry_failures(create_client, "Failed to connect to minio")