start_translator.sh
1.79 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#!/bin/bash
#
# Start Translation Service (port 6006).
#
# Design:
# - Run in isolated venv `.venv-translator`
# - Load enabled translation capabilities at startup
# - Local models should be downloaded ahead of time into configured model_dir
#
set -euo pipefail
PROJECT_ROOT="$(cd "$(dirname "$0")/.." && pwd)"
cd "${PROJECT_ROOT}"
TRANSLATOR_VENV="${TRANSLATOR_VENV:-${PROJECT_ROOT}/.venv-translator}"
PYTHON_BIN="${TRANSLATOR_VENV}/bin/python"
if [[ ! -x "${PYTHON_BIN}" ]]; then
echo "ERROR: translator venv not found: ${TRANSLATOR_VENV}" >&2
echo "Please run: ./scripts/setup_translator_venv.sh" >&2
exit 1
fi
# shellcheck source=scripts/lib/load_env.sh
source "${PROJECT_ROOT}/scripts/lib/load_env.sh"
load_env_file "${PROJECT_ROOT}/.env"
TRANSLATION_HOST="${TRANSLATION_HOST:-0.0.0.0}"
TRANSLATION_PORT="${TRANSLATION_PORT:-6006}"
DEFAULT_MODEL=$("${PYTHON_BIN}" -c "from config.services_config import get_translation_config; print(get_translation_config()['default_model'])")
ENABLED_MODELS=$("${PYTHON_BIN}" -c "from config.services_config import get_translation_config; from translation.settings import get_enabled_translation_models; print(','.join(get_enabled_translation_models(get_translation_config())))")
echo "========================================"
echo "Starting Translation Service"
echo "========================================"
echo "Python: ${PYTHON_BIN}"
echo "Host: ${TRANSLATION_HOST}"
echo "Port: ${TRANSLATION_PORT}"
echo "Default model: ${DEFAULT_MODEL}"
echo "Enabled models: ${ENABLED_MODELS}"
echo
echo "Tips:"
echo " - Use a single worker so local models are loaded once."
echo " - Download local models first if you enable them in config."
echo
exec "${PYTHON_BIN}" -m uvicorn api.translator_app:app \
--host "${TRANSLATION_HOST}" \
--port "${TRANSLATION_PORT}" \
--workers 1