- Postgres в compose; пакет db (SQLAlchemy async): clients, windows, requests. - Все эндпоинты, кроме /health, — только с ключом в X-API-Key, иначе 401; без выпущенных ключей доступа нет. В базе — только sha256 ключа. - Задача и окно сессии привязаны к клиенту: чужой ключ их не видит. - Воркер пишет журнал: окно (открыто, последнее обращение, закрыто) и задачу (в очереди, начало, конец, итог, данные без секретов). Сбой записи не роняет задачу. - python -m db.cli create|list|revoke|stats; make key-create/key-list/key-revoke/stats. - smoke и loadtest с ключом. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
20 lines
918 B
Plaintext
20 lines
918 B
Plaintext
# Project Env
|
|
# порт api на хосте (docker-compose)
|
|
API_PORT=8000
|
|
# CPU и память контейнера worker
|
|
WORKER_CPUS=4
|
|
WORKER_MEM_LIMIT=8g
|
|
# сколько окон Chrome на воркер — и выполняющих задачу, и удерживаемых (browser_idle_timeout); ≈ числу ядер
|
|
BROWSER_SLOTS=4
|
|
# пароли RabbitMQ и Postgres (сеть compose наружу не открыта)
|
|
RABBITMQ_PASSWORD=robotex
|
|
POSTGRES_PASSWORD=robotex
|
|
# сколько часов хранится результат задачи в Redis
|
|
RESULT_TTL_HOURS=24
|
|
# через сколько дней без использования удаляется профиль браузера
|
|
PROFILE_TTL_DAYS=7
|
|
# сколько /v1/solve ждёт, пока воркер возьмёт задачу, прежде чем ответить 503
|
|
V1_QUEUE_WAIT=30
|
|
NO_SLOTS_RETRY_AFTER=5
|
|
LOG_LEVEL=INFO
|