Chuyển tới nội dung chính

Cấu Hình Tập Trung

Vị Trí

app/config/settings.py — trung tâm quản lý cấu hình, đọc từ file .env.* ở root.


Cơ Chế Load .env

_env = os.getenv("APP_ENV", "local")  # Mặc định: "local"
# → Load file .env.local
  • APP_ENV=local → load .env.local (development)
  • APP_ENV=production → load .env.production
  • Docker mặc định dùng .env (qua env_file: .env trong docker-compose)

Danh Sách Biến Môi Trường

HTTP Client

BiếnMặc địnhMô tả
HTTP_DEFAULT_TIMEOUT30Timeout request (giây)
HTTP_DEFAULT_RETRIES3Số lần retry tối đa
HTTP_DEFAULT_IMPERSONATEchrome124Browser profile mặc định

Proxy

BiếnMặc địnhMô tả
PROXY_LIST""Danh sách proxy, phân cách bằng dấu phẩy
PROXY_ROTATIONround_robinChiến lược xoay vòng: round_robin hoặc random

Logging

BiếnMặc địnhMô tả
LOG_LEVELINFOMức log: TRACE, DEBUG, INFO, SUCCESS, WARNING, ERROR, CRITICAL
LOG_TO_CONSOLEtrueGhi log ra console
LOG_TO_FILEfalseGhi log ra file
LOG_FILE_PATHlogs/app.logĐường dẫn file log

Redis

BiếnMặc địnhMô tả
REDIS_URLredis://localhost:6379/0URL kết nối Redis (broker + backend)

Core MySQL (nội bộ hệ thống)

BiếnMặc địnhMô tả
CORE_MYSQL_HOSTlocalhostHost
CORE_MYSQL_PORT3306Port
CORE_MYSQL_USERadminUser
CORE_MYSQL_PASSWORDadminPassword
CORE_DB_NAMEcrawler_coreTên database

User Databases

simplize_mysql_dev (MySQL)

BiếnMặc định
SIMPLIZE_MYSQL_DEV_HOSTlocalhost
SIMPLIZE_MYSQL_DEV_PORT3306
SIMPLIZE_MYSQL_DEV_USERadmin
SIMPLIZE_MYSQL_DEV_PASSWORDadmin

localhost_mysql (MySQL)

BiếnMặc định
LOCALHOST_MYSQL_HOSTlocalhost
LOCALHOST_MYSQL_PORT3306
LOCALHOST_MYSQL_USERadmin
LOCALHOST_MYSQL_PASSWORDadmin

simplize_postgres_dev (PostgreSQL)

BiếnMặc định
SIMPLIZE_POSTGRES_DEV_HOSTlocalhost
SIMPLIZE_POSTGRES_DEV_PORT5433
SIMPLIZE_POSTGRES_DEV_USERpostgres
SIMPLIZE_POSTGRES_DEV_PASSWORDadmin

localhost_postgres (PostgreSQL)

BiếnMặc định
LOCALHOST_POSTGRES_HOSTlocalhost
LOCALHOST_POSTGRES_PORT5433
LOCALHOST_POSTGRES_USERadmin
LOCALHOST_POSTGRES_PASSWORDadmin

Config Priority Chain

Khi đọc config qua config_service.get_config(key, worker_id), hệ thống tìm theo thứ tự:

1. Worker-specific DB config (worker_id = "my_worker")    ← cao nhất
2. Global DB config (worker_id = NULL)
3. Biến môi trường (os.getenv(key))
4. settings.py attribute (key.lower())
5. Default value ← thấp nhất

Ví dụ:

  • get_config("LOG_LEVEL") → tìm global config trong DB → nếu không có → os.getenv("LOG_LEVEL")settings.log_level"INFO"
  • get_config("LOG_LEVEL", worker_id="my_ws") → tìm config riêng my_ws → global config → env → settings

Config được quản lý qua API — xem API Control Guide.


Thêm Biến Mới

  1. Thêm attribute vào class Settings trong app/config/settings.py:
class Settings:
# --- My New Config ---
my_new_setting: str = os.getenv("MY_NEW_SETTING", "default_value")
  1. Thêm biến vào file .env.local (và .env cho Docker):
MY_NEW_SETTING=custom_value
  1. Sử dụng:
from app.config import settings
print(settings.my_new_setting)

Hoặc qua config service (hỗ trợ override qua DB):

from app.core.services.config_service import get_config
value = get_config("MY_NEW_SETTING", default="fallback")