diff --git a/docker-compose.yaml b/docker-compose.yaml index 1045fff..52d5c98 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -136,6 +136,9 @@ services: - INVENIO_SECURITY_REGISTERABLE=False # Disable manual user registration - INVENIO_MAIL_SUPPRESS_SEND=False # Allow server to send emails - INVENIO_RDM_DEFAULT_CITATION_STYLE = "vancouver" + + # Custom gunicorn config settings + - GUNICORN_CMD_ARGS=--timeout 300 --graceful-timeout 120 depends_on: search: condition: service_started @@ -187,6 +190,9 @@ services: - INVENIO_S3_ACCESS_KEY_ID=${INVENIO_S3_ACCESS_KEY_ID:-} - INVENIO_S3_SECRET_ACCESS_KEY=${INVENIO_S3_SECRET_ACCESS_KEY:-} - INVENIO_S3_BUCKET_NAME=${INVENIO_S3_BUCKET_NAME:-} + + # Custom gunicorn config settings + - GUNICORN_CMD_ARGS=--timeout 300 --graceful-timeout 120 depends_on: search: condition: service_started diff --git a/invenio.cfg b/invenio.cfg index 585cfb4..95387de 100644 --- a/invenio.cfg +++ b/invenio.cfg @@ -196,6 +196,9 @@ INSTANCE_THEME_FILE = "./less/theme.less" # Invenio-Files-Rest # ================== FILES_REST_STORAGE_FACTORY = "invenio_s3.s3fs_storage_factory" +FILES_REST_MAX_CONTENT_LENGTH = 50 * 1024 * 1024 * 1024 # 50GB +FILES_REST_MULTIPART_CHUNKSIZE_MIN = 5 * 1024 * 1024 # 5MB minimum +FILES_REST_MULTIPART_MAX_PARTS = 10000 # Allow more parts for large files # Invenio-S3 # ========== @@ -203,6 +206,17 @@ S3_ENDPOINT_URL = "http://localhost:9000/" S3_ACCESS_KEY_ID = "CHANGE_ME" S3_SECRET_ACCESS_KEY = "CHANGE_ME" S3_REGION_NAME = "eu-west-1" +S3_DIRECT_UPLOAD = True +S3_MULTIPART_UPLOAD_THRESHOLD = 100 * 1024 * 1024 # 100MB +S3_MULTIPART_UPLOAD_PART_SIZE = 100 * 1024 * 1024 # 100MB +S3_MULTIPART_MAX_PARTS = 100000 # Max number of parts (allows up to ~10TB) +S3_PRESIGNED_URL_EXPIRATION = 60 * 60 * 6 # 6 hours in seconds +S3_CLIENT_CONFIG = { + "connect_timeout": 120, # 2 minutes + "read_timeout": 300, # 5 minutes + "max_pool_connections": 50, + "retries": {"max_attempts": 10, "mode": "adaptive"}, +} # Invenio-Records-Resources # =========================