mirror of
https://github.com/rnvm9wjdtj-bot/myaps_api.git
synced 2026-06-02 05:54:40 +00:00
feat: 多项优化和修复
1. 修复数据库完整性错误:staging_routers.py 添加 _retry_count 字段默认值 0 2. 时区配置规范化:.env 和 settings.py 使用 IANA 格式(Asia/Shanghai),保持向后兼容 3. Docker 部署优化: - Portainer 禁用 Edge 功能,释放 8000 端口 - Uptime Kuma 和 Portainer 设为默认启动服务 4. 新增部署模板:创建 scripts/deploy_docker/mount 目录结构
This commit is contained in:
@@ -33,7 +33,6 @@ ehthumbs.db
|
||||
Thumbs.db
|
||||
|
||||
# Logs
|
||||
logs
|
||||
*.log
|
||||
|
||||
# Runtime data
|
||||
@@ -92,7 +91,6 @@ project_files/**/remind.py
|
||||
.binlog_position.json
|
||||
|
||||
*.sqlite*
|
||||
storage/
|
||||
storage/**/
|
||||
|
||||
|
||||
|
||||
@@ -184,8 +184,8 @@ async def insert_to_staging_table(
|
||||
skipped_fields = set()
|
||||
|
||||
for item in data_list:
|
||||
columns = ["_source_system", "_status"]
|
||||
values = [source_system, "pending"]
|
||||
columns = ["_source_system", "_status", "_retry_count"]
|
||||
values = [source_system, "pending", 0]
|
||||
|
||||
for key, value in item.items():
|
||||
if value is not None and key not in exclude_fields:
|
||||
|
||||
+16
-7
@@ -16,19 +16,28 @@ logger = log_config.get_logger(__name__)
|
||||
|
||||
|
||||
|
||||
# 时区,默认东八区
|
||||
TIMEZONE = os.getenv("TIMEZONE", "+8")
|
||||
# 时区,默认东八区(使用 IANA 格式)
|
||||
TIMEZONE = os.getenv("TIMEZONE", "Asia/Shanghai")
|
||||
|
||||
def get_timezone_name(offset_str):
|
||||
def get_timezone_name(timezone_str):
|
||||
"""
|
||||
将时区偏移量字符串(如 +8, -5)转换为时区名称(如 Asia/Shanghai)
|
||||
将时区字符串转换为标准 IANA 时区名称
|
||||
|
||||
支持两种格式:
|
||||
1. IANA 时区格式(如 Asia/Shanghai)- 直接返回
|
||||
2. 偏移量格式(如 +8, -5)- 转换为对应的 IANA 时区名称
|
||||
|
||||
Args:
|
||||
offset_str: 时区偏移量字符串,格式为 "+8" 或 "-5"
|
||||
timezone_str: 时区字符串,格式为 "Asia/Shanghai" 或 "+8" 或 "-5"
|
||||
|
||||
Returns:
|
||||
时区名称,如 "Asia/Shanghai"
|
||||
标准 IANA 时区名称,如 "Asia/Shanghai"
|
||||
"""
|
||||
# 如果已经是 IANA 格式(包含 '/'),直接返回
|
||||
if "/" in timezone_str:
|
||||
return timezone_str
|
||||
|
||||
# 偏移量格式转换映射
|
||||
offset_map = {
|
||||
"-12": "Etc/GMT+12",
|
||||
"-11": "Etc/GMT+11",
|
||||
@@ -59,7 +68,7 @@ def get_timezone_name(offset_str):
|
||||
"+12": "Pacific/Fiji",
|
||||
}
|
||||
|
||||
return offset_map.get(offset_str, "Asia/Shanghai")
|
||||
return offset_map.get(timezone_str, "Asia/Shanghai")
|
||||
|
||||
TIMEZONE_NAME = get_timezone_name(TIMEZONE)
|
||||
|
||||
|
||||
@@ -34,6 +34,28 @@ services:
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
postgres:
|
||||
image: postgres:16-alpine
|
||||
container_name: myaps_postgres
|
||||
restart: unless-stopped
|
||||
network_mode: host
|
||||
env_file:
|
||||
- .env
|
||||
environment:
|
||||
- TZ=${TIMEZONE:-Asia/Shanghai}
|
||||
- POSTGRES_INITDB_ARGS=--encoding=UTF-8 --lc-collate=C --lc-ctype=C
|
||||
- POSTGRES_USER=${THIS_DB_USER}
|
||||
- POSTGRES_PASSWORD=${THIS_DB_PASSWORD}
|
||||
- POSTGRES_DB=${THIS_DB_NAME}
|
||||
- POSTGRES_PORT=${THIS_DB_PORT:-5432}
|
||||
volumes:
|
||||
- postgres_data:/var/lib/postgresql/data
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -U ${THIS_DB_USER} -d ${THIS_DB_NAME}"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
app:
|
||||
build:
|
||||
context: .
|
||||
@@ -47,6 +69,7 @@ services:
|
||||
environment:
|
||||
# 覆盖.env中的配置,适配host网络模式
|
||||
- REDIS_HOST=${REDIS_HOST:-localhost}
|
||||
- THIS_DB_HOST=${THIS_DB_HOST:-localhost}
|
||||
- GUNICORN_BIND=0.0.0.0:${PORT:-8000}
|
||||
- APP_ROOT=/app
|
||||
volumes:
|
||||
@@ -63,6 +86,8 @@ services:
|
||||
depends_on:
|
||||
redis:
|
||||
condition: service_healthy
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://localhost:8000/docs"]
|
||||
interval: 30s
|
||||
@@ -70,6 +95,38 @@ services:
|
||||
start_period: 10s
|
||||
retries: 3
|
||||
|
||||
# ============ 附加服务(默认开启)============
|
||||
# 监控和管理工具,随基础服务一起启动
|
||||
|
||||
uptime-kuma:
|
||||
image: louislam/uptime-kuma:1.23.11
|
||||
container_name: myaps_uptime_kuma
|
||||
restart: unless-stopped
|
||||
network_mode: host
|
||||
volumes:
|
||||
- uptime_kuma_data:/app/data
|
||||
healthcheck:
|
||||
test: ["CMD", "node", "server/server.js", "--healthcheck"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
|
||||
portainer:
|
||||
image: portainer/portainer-ce:2.21.4
|
||||
container_name: myaps_portainer
|
||||
restart: unless-stopped
|
||||
network_mode: host
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
- portainer_data:/data
|
||||
command: -p 9000 --no-edge
|
||||
|
||||
volumes:
|
||||
redis_data:
|
||||
driver: local
|
||||
postgres_data:
|
||||
driver: local
|
||||
uptime_kuma_data:
|
||||
driver: local
|
||||
portainer_data:
|
||||
driver: local
|
||||
|
||||
Reference in New Issue
Block a user