Files
ai_mip/config.py

114 lines
4.4 KiB
Python
Raw Permalink Normal View History

2026-01-13 18:59:26 +08:00
import os
from dotenv import load_dotenv
# 获取运行环境,默认为 development
ENV = os.getenv('ENV', 'development')
# 根据环境加载对应的配置文件
if ENV == 'production':
env_file = '.env.production'
else:
env_file = '.env.development'
# 加载环境配置文件
from pathlib import Path
env_path = Path(env_file)
if env_path.exists():
load_dotenv(env_file)
# 始终显示配置加载信息(便于调试)
print(f"[Config] 加载配置文件: {env_path.absolute()}")
api_key = os.getenv('ADSPOWER_API_KEY', '')
if api_key:
print(f"[Config] ADSPOWER_API_KEY: {api_key[:8]}... (长度: {len(api_key)})")
else:
print(f"[Config] ADSPOWER_API_KEY: 未设置")
else:
print(f"[Config] 警告: 配置文件不存在 {env_path.absolute()}")
load_dotenv() # 尝试加载默认的 .env
class BaseConfig:
"""基础配置类"""
# 环境标识
ENV = ENV
# AdsPower配置
ADSPOWER_API_URL = os.getenv('ADSPOWER_API_URL', 'http://local.adspower.net:50325')
ADSPOWER_USER_ID = os.getenv('ADSPOWER_USER_ID', '')
ADSPOWER_API_KEY = os.getenv('ADSPOWER_API_KEY', '') # 可选,某些版本需要
# 服务配置
SERVER_HOST = os.getenv('SERVER_HOST', '0.0.0.0')
SERVER_PORT = int(os.getenv('SERVER_PORT', 5000))
# 点击策略配置
2026-01-21 14:33:10 +08:00
MIN_CLICK_COUNT = int(os.getenv('MIN_CLICK_COUNT', 1)) # 每日最少点击次数
MAX_CLICK_COUNT = int(os.getenv('MAX_CLICK_COUNT', 3)) # 每日最多点击次数
CLICK_INTERVAL_MINUTES = int(os.getenv('CLICK_INTERVAL_MINUTES', 30)) # 点击间隔(分钟)
MIN_TASK_INTERVAL_MINUTES = int(os.getenv('MIN_TASK_INTERVAL_MINUTES', 3)) # 任务间最小间隔(分钟)
MAX_TASK_INTERVAL_MINUTES = int(os.getenv('MAX_TASK_INTERVAL_MINUTES', 5)) # 任务间最大间隔(分钟)
2026-02-24 12:46:35 +08:00
MAX_CONCURRENT_WORKERS = int(os.getenv('MAX_CONCURRENT_WORKERS', 2)) # 最大并发任务数默认2
2026-01-21 14:33:10 +08:00
WORK_START_HOUR = int(os.getenv('WORK_START_HOUR', 9)) # 工作开始时间
WORK_END_HOUR = int(os.getenv('WORK_END_HOUR', 21)) # 工作结束时间
REPLY_WAIT_TIMEOUT = int(os.getenv('REPLY_WAIT_TIMEOUT', 30)) # 回复等待超时(秒)
# 爬虫调度配置
CRAWLER_ENABLED = os.getenv('CRAWLER_ENABLED', 'True').lower() == 'true' # 是否启用爬虫
CRAWLER_SCHEDULE_TIME = os.getenv('CRAWLER_SCHEDULE_TIME', '02:00') # 爬虫执行时间HH:MM
CRAWLER_BATCH_SIZE = int(os.getenv('CRAWLER_BATCH_SIZE', 10)) # 每次爬取任务数量
2026-01-13 18:59:26 +08:00
# 数据存储路径
DATA_DIR = os.getenv('DATA_DIR', './data')
LOG_DIR = os.getenv('LOG_DIR', './logs')
2026-02-24 12:46:35 +08:00
QUERY_UPLOAD_DIR = os.getenv('QUERY_UPLOAD_DIR', './query_upload') # Query挖掘上传目录
2026-01-13 18:59:26 +08:00
# 调试模式
DEBUG = os.getenv('DEBUG', 'False').lower() == 'true'
2026-01-16 22:06:46 +08:00
# 测试配置
AUTO_CLOSE_BROWSER = os.getenv('AUTO_CLOSE_BROWSER', 'False').lower() == 'true' # 测试完成后是否自动关闭浏览器
# MySQL数据库配置
MYSQL_HOST = os.getenv('MYSQL_HOST', 'localhost')
MYSQL_PORT = int(os.getenv('MYSQL_PORT', 3306))
MYSQL_USER = os.getenv('MYSQL_USER', 'root')
MYSQL_PASSWORD = os.getenv('MYSQL_PASSWORD', '')
MYSQL_DATABASE = os.getenv('MYSQL_DATABASE', 'ai_article')
2026-02-24 12:46:35 +08:00
# 远程点击服务配置(分布式部署时使用)
# 为空表示本地模式调度器在Web服务内运行
# 设置URL表示远程模式Web服务转发请求到远程点击服务
CLICK_SERVICE_URL = os.getenv('CLICK_SERVICE_URL', '') # 例如: http://192.168.1.100:8888
# 服务模式web=提供前端界面, click=仅提供调度API
SERVICE_MODE = os.getenv('SERVICE_MODE', 'web')
# 千问大模型API配置
QWEN_API_KEY = os.getenv('QWEN_API_KEY', 'sk-6d22dd845a624d9c92a821d24a50e2e8')
QWEN_API_URL = os.getenv('QWEN_API_URL', 'https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions')
2026-01-13 18:59:26 +08:00
@classmethod
def ensure_dirs(cls):
"""确保必要的目录存在"""
os.makedirs(cls.DATA_DIR, exist_ok=True)
os.makedirs(cls.LOG_DIR, exist_ok=True)
2026-02-24 12:46:35 +08:00
os.makedirs(cls.QUERY_UPLOAD_DIR, exist_ok=True)
2026-01-13 18:59:26 +08:00
class DevelopmentConfig(BaseConfig):
"""开发环境配置"""
DEBUG = True
class ProductionConfig(BaseConfig):
"""生产环境配置"""
2026-02-24 12:46:35 +08:00
DEBUG = True
2026-01-13 18:59:26 +08:00
# 根据环境选择配置
if ENV == 'production':
Config = ProductionConfig
else:
Config = DevelopmentConfig