From 9602ae6d94fb501f71caeec99d5243ecf44598c0 Mon Sep 17 00:00:00 2001 From: Pier-Jean Malandrino Date: Mon, 13 Apr 2026 11:32:33 +0200 Subject: [PATCH] refactor: move BATCH_PAGE_SIZE default from Dockerfile to settings.py Default value of 5 is now in the application code (settings.py) instead of only in the Docker image ENV. Consistent across all deployment modes (dev local, Docker, tests). Aligned docker-compose files and docs. --- Dockerfile | 1 - README.md | 2 +- docker-compose.dev.yml | 2 +- docker-compose.yml | 2 +- docs/getting-started.md | 2 +- document-parser/infra/settings.py | 2 +- 6 files changed, 5 insertions(+), 6 deletions(-) diff --git a/Dockerfile b/Dockerfile index c43e591..ff3e37b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -76,4 +76,3 @@ RUN pip install --no-cache-dir torch torchvision --index-url https://download.py RUN chown -R appuser:appuser /app \ && chown -R appuser:appuser /usr/local/lib/python3.12/site-packages/rapidocr/models ENV CONVERSION_ENGINE=local -ENV BATCH_PAGE_SIZE=5 diff --git a/README.md b/README.md index f868861..9f76066 100644 --- a/README.md +++ b/README.md @@ -206,7 +206,7 @@ All configuration is done via environment variables. See [`.env.example`](.env.e | `UPLOAD_DIR` | `./uploads` | File storage directory | | `DB_PATH` | `./data/docling_studio.db` | SQLite database path | | `CONVERSION_TIMEOUT` | `600` | Max seconds for a single Docling conversion | -| `BATCH_PAGE_SIZE` | `5` (Docker) / `0` | Pages per batch (`0` = process all at once) | +| `BATCH_PAGE_SIZE` | `5` | Pages per batch (`0` = process all at once) | | `MAX_FILE_SIZE_MB` | `50` | Maximum upload file size in MB (`0` = unlimited) | | `MAX_PAGE_COUNT` | `0` | Maximum number of pages per document (`0` = unlimited) | | `RATE_LIMIT_RPM` | `100` | Max requests per minute per IP (`0` = disabled) | diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index fc08ad2..afd24ac 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -74,7 +74,7 @@ services: DOCLING_SERVE_API_KEY: ${DOCLING_SERVE_API_KEY:-} RATE_LIMIT_RPM: ${RATE_LIMIT_RPM:-100} MAX_FILE_SIZE_MB: ${MAX_FILE_SIZE_MB:-50} - BATCH_PAGE_SIZE: ${BATCH_PAGE_SIZE:-0} + BATCH_PAGE_SIZE: ${BATCH_PAGE_SIZE:-5} OPENSEARCH_URL: http://opensearch:9200 EMBEDDING_URL: http://embedding:8001 command: ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000", "--reload"] diff --git a/docker-compose.yml b/docker-compose.yml index 7548959..bde9a9d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -50,7 +50,7 @@ services: DOCLING_SERVE_API_KEY: ${DOCLING_SERVE_API_KEY:-} RATE_LIMIT_RPM: ${RATE_LIMIT_RPM:-100} MAX_FILE_SIZE_MB: ${MAX_FILE_SIZE_MB:-50} - BATCH_PAGE_SIZE: ${BATCH_PAGE_SIZE:-0} + BATCH_PAGE_SIZE: ${BATCH_PAGE_SIZE:-5} OPENSEARCH_URL: ${OPENSEARCH_URL:-} EMBEDDING_URL: ${EMBEDDING_URL:-} deploy: diff --git a/docs/getting-started.md b/docs/getting-started.md index 94eae04..6b273ff 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -141,7 +141,7 @@ All configuration is done via environment variables: | `UPLOAD_DIR` | `./uploads` | File storage directory | | `DB_PATH` | `./data/docling_studio.db` | SQLite database path | | `CONVERSION_TIMEOUT` | `600` | Max seconds per Docling conversion | -| `BATCH_PAGE_SIZE` | `5` (Docker) / `0` | Pages per batch (`0` = process all at once) | +| `BATCH_PAGE_SIZE` | `5` | Pages per batch (`0` = process all at once) | | `MAX_CONCURRENT_ANALYSES` | `3` | Maximum parallel analysis jobs | | `DEPLOYMENT_MODE` | `self-hosted` | `self-hosted` or `huggingface` (shows disclaimer banner) | | `MAX_FILE_SIZE_MB` | `50` | Maximum upload file size in MB (`0` = unlimited) | diff --git a/document-parser/infra/settings.py b/document-parser/infra/settings.py index f93c299..0d2cec0 100644 --- a/document-parser/infra/settings.py +++ b/document-parser/infra/settings.py @@ -94,7 +94,7 @@ class Settings: max_file_size=int(os.environ.get("MAX_FILE_SIZE", "0")), max_file_size_mb=int(os.environ.get("MAX_FILE_SIZE_MB", "50")), rate_limit_rpm=int(os.environ.get("RATE_LIMIT_RPM", "100")), - batch_page_size=int(os.environ.get("BATCH_PAGE_SIZE", "0")), + batch_page_size=int(os.environ.get("BATCH_PAGE_SIZE", "5")), opensearch_url=os.environ.get("OPENSEARCH_URL", ""), embedding_url=os.environ.get("EMBEDDING_URL", ""), embedding_dimension=int(os.environ.get("EMBEDDING_DIMENSION", "384")),