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(quaenv_file: .envtrong docker-compose)
Danh Sách Biến Môi Trường
HTTP Client
| Biến | Mặc định | Mô tả |
|---|---|---|
HTTP_DEFAULT_TIMEOUT | 30 | Timeout request (giây) |
HTTP_DEFAULT_RETRIES | 3 | Số lần retry tối đa |
HTTP_DEFAULT_IMPERSONATE | chrome124 | Browser profile mặc định |
Proxy
| Biến | Mặc định | Mô tả |
|---|---|---|
PROXY_LIST | "" | Danh sách proxy, phân cách bằng dấu phẩy |
PROXY_ROTATION | round_robin | Chiến lược xoay vòng: round_robin hoặc random |
Logging
| Biến | Mặc định | Mô tả |
|---|---|---|
LOG_LEVEL | INFO | Mức log: TRACE, DEBUG, INFO, SUCCESS, WARNING, ERROR, CRITICAL |
LOG_TO_CONSOLE | true | Ghi log ra console |
LOG_TO_FILE | false | Ghi log ra file |
LOG_FILE_PATH | logs/app.log | Đường dẫn file log |
Redis
| Biến | Mặc định | Mô tả |
|---|---|---|
REDIS_URL | redis://localhost:6379/0 | URL kết nối Redis (broker + backend) |
Core MySQL (nội bộ hệ thống)
| Biến | Mặc định | Mô tả |
|---|---|---|
CORE_MYSQL_HOST | localhost | Host |
CORE_MYSQL_PORT | 3306 | Port |
CORE_MYSQL_USER | admin | User |
CORE_MYSQL_PASSWORD | admin | Password |
CORE_DB_NAME | crawler_core | Tên database |
User Databases
simplize_mysql_dev (MySQL)
| Biến | Mặc định |
|---|---|
SIMPLIZE_MYSQL_DEV_HOST | localhost |
SIMPLIZE_MYSQL_DEV_PORT | 3306 |
SIMPLIZE_MYSQL_DEV_USER | admin |
SIMPLIZE_MYSQL_DEV_PASSWORD | admin |
localhost_mysql (MySQL)
| Biến | Mặc định |
|---|---|
LOCALHOST_MYSQL_HOST | localhost |
LOCALHOST_MYSQL_PORT | 3306 |
LOCALHOST_MYSQL_USER | admin |
LOCALHOST_MYSQL_PASSWORD | admin |
simplize_postgres_dev (PostgreSQL)
| Biến | Mặc định |
|---|---|
SIMPLIZE_POSTGRES_DEV_HOST | localhost |
SIMPLIZE_POSTGRES_DEV_PORT | 5433 |
SIMPLIZE_POSTGRES_DEV_USER | postgres |
SIMPLIZE_POSTGRES_DEV_PASSWORD | admin |
localhost_postgres (PostgreSQL)
| Biến | Mặc định |
|---|---|
LOCALHOST_POSTGRES_HOST | localhost |
LOCALHOST_POSTGRES_PORT | 5433 |
LOCALHOST_POSTGRES_USER | admin |
LOCALHOST_POSTGRES_PASSWORD | admin |
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êngmy_ws→ global config → env → settings
Config được quản lý qua API — xem API Control Guide.
Thêm Biến Mới
- Thêm attribute vào class
Settingstrongapp/config/settings.py:
class Settings:
# --- My New Config ---
my_new_setting: str = os.getenv("MY_NEW_SETTING", "default_value")
- Thêm biến vào file
.env.local(và.envcho Docker):
MY_NEW_SETTING=custom_value
- 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")