run_buff_sync_loop_prod.sh 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #!/bin/sh
  2. # 生产环境(Ubuntu):先激活 venv,再按顺序执行 BUFF 同步脚本,全部成功后休眠再重复。
  3. # 兼容 /bin/sh(dash);勿使用「sh -c」里嵌套复杂引号时混淆 $0。
  4. # 推荐:chmod +x 后 ./run_buff_sync_loop_prod.sh
  5. #
  6. # 虚拟环境查找顺序(可 export VENV_DIR 强制指定):
  7. # 1) 环境变量 VENV_DIR
  8. # 2) 脚本目录下的 venv(如 /root/sync_goods/venv)
  9. # 3) 脚本目录上一级的 venv(如 buff-api/venv)
  10. set -eu
  11. DIR=$(CDPATH= cd -- "$(dirname "$0")" && pwd)
  12. if [ -n "${VENV_DIR:-}" ]; then
  13. ACTIVATE="$VENV_DIR/bin/activate"
  14. if [ ! -f "$ACTIVATE" ]; then
  15. echo "VENV_DIR=$VENV_DIR 下未找到 bin/activate" >&2
  16. exit 1
  17. fi
  18. elif [ -f "$DIR/venv/bin/activate" ]; then
  19. ACTIVATE="$DIR/venv/bin/activate"
  20. elif [ -f "$DIR/../venv/bin/activate" ]; then
  21. ACTIVATE="$DIR/../venv/bin/activate"
  22. else
  23. echo "未找到虚拟环境。已尝试: VENV_DIR、$DIR/venv、$DIR/../venv" >&2
  24. echo "请创建 venv 或执行: export VENV_DIR=/你的/venv路径" >&2
  25. exit 1
  26. fi
  27. # shellcheck source=/dev/null
  28. . "$ACTIVATE"
  29. cd "$DIR"
  30. SLEEP_SEC="${SLEEP_SEC:-600}"
  31. while true; do
  32. echo "$(date '+%Y-%m-%d %H:%M:%S') 开始一轮: sync_goods.py -> sync_float_price.py -> sync_liquidity.py"
  33. python sync_goods.py
  34. python sync_float_price.py
  35. python sync_liquidity.py
  36. echo "$(date '+%Y-%m-%d %H:%M:%S') 本轮完成,等待 ${SLEEP_SEC} 秒后开始下一轮"
  37. sleep "$SLEEP_SEC"
  38. done