|
|
2 часов назад | |
|---|---|---|
| app | 2 часов назад | |
| frontend | 12 часов назад | |
| .dockerignore | 2 недель назад | |
| .env.example | 1 неделя назад | |
| .gitignore | 2 недель назад | |
| Dockerfile | 2 недель назад | |
| README.md | 1 неделя назад | |
| deploy.sh | 2 недель назад | |
| docker-compose.yml | 2 недель назад | |
| requirements.txt | 1 день назад |
一个包含 Web 接口 + 定时任务 的 Python 服务基础骨架。
pip install -r requirements.txt
cp .env.example .env
uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload
cd frontend
npm install
npm run dev
默认前端地址:http://localhost:5173
GET /demand/api/v1/health:服务健康检查GET /demand/api/v1/scheduler/status:定时任务状态GET /demand/api/v1/demand-pool:查询 multi_demand_pool_di,支持 strategy、start_dt、end_dt 筛选与分页(page、page_size)GET /demand/api/v1/demand-pool/strategies:统计策略名列表(可按日期范围过滤)heartbeat_job:默认每 1 小时执行一次,输出心跳日志(与其它定时任务频率无关,仅便于确认调度器存活)demand_pool_today_incremental_sync_job:每小时执行一次,当天分区增量同步(插入前按 demand_id 去重)你可以在 app/scheduler/jobs.py 中继续添加业务任务,并在 app/scheduler/manager.py 里注册。
app/db/mysql.py
get_db_session():获取 SQLAlchemy 会话(可用于依赖注入)app/odps/client.py
get_odps_client():获取 ODPS 客户端单例相关配置在 .env 中维护。
app/sync/demand_pool_sync.pydwd_multi_demand_pool_di(extend 写入 MySQL ext_info,其余字段直映射)dwd_demand_pool_di(默认关闭,DEMAND_POOL_SECONDARY_SYNC_ENABLED=true 时启用;映射规则:strategy=近期需求,demand_id=MD5(strategy+demand+dt),demand_name=demand,weight=score,video_count/video_list 置空,ext_info={})run_full_sync(),默认同步分区 20260507,20260508,20260509run_today_incremental_sync(),每小时同步当天分区demand_id 去重,写入 MySQL 时使用唯一键 UPSERTfrontendstrategy / dt 筛选查询 + 表格展示/demand/api/v1在项目根目录执行:
docker compose up -d --build
启动后:
http://localhost:8080http://localhost:8000