[Unit] Description=Market Data Full Sync (PostgreSQL, 9 sync tasks end-to-end) Documentation=file:///home/gao/Development/quant_home/market_sync/bin/market_sync_run.sh After=network-online.target Wants=network-online.target [Service] Type=oneshot WorkingDirectory=/home/gao/Development/quant_home/market_sync User=gao Group=gao # 入口脚本(runall_once.py + structured_watch.sh 二合一) ExecStart=/home/gao/Development/quant_home/market_sync/bin/market_sync_run.sh # 硬上限 2h(实际 ~80min,留 buffer 给 retry / 慢任务) TimeoutStartSec=7200 # 不要 Restart=(oneshot 失败就让 OnFailure= 发通知,别自动重跑—— # 重跑会撞外部 API 限流窗口,浪费 1.5h) # Restart=no 是 oneshot 默认值 # 日志走 journald(journalctl -u market-sync.service -f) StandardOutput=journal StandardError=journal SyslogIdentifier=market-sync # 环境(不读 /etc/environment,只带这几个;.env 由 runall_once.py 内部 load_dotenv) Environment=PYTHONUNBUFFERED=1 [Install] WantedBy=multi-user.target