fix(data): bs_eod挂死根治——login/logout纳入_with_timeout保护伞+中文系统运行判定三词修正。①根因(08-20 19:26实锤,日志形态逐字吻合):bs.login()打印success后仍有后续往返,baostock recv不遵守socket default timeout,主线程卡死在login内部recv(50min+零输出,连60s超时err都没有);fetch早已套_with_timeout但login/logout是裸调——relogin/login_once全部纳入(login60s/logout30s),超时按登录失败处理走既有重试链;②bs_fundamentals._is_running_text:中文系统实际输出「正在运行」不含连续子串「运行中」,原两词判定在中文VPS恒False=守卫恒fail-open(当晚若不禁用bs-fund将真撞车);三词都认+回归钉测试;③check_task_running.py通用探针(修复版)替换VPS上带同bug的check_bs_eod.py;+4测试(登录超时返False/relogin全程超时不raise/login与logout必经保护伞契约/正在运行判定) [vps]
This commit is contained in:
@@ -0,0 +1,13 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""check_task_running.py — schtask 是否在跑(exit 0=在跑, 1=已退出/查无)。
|
||||
运维探针(watcher/cron 轮询用)。中文输出「正在运行」不含子串「运行中」——三词都认
|
||||
(2026-08-20 假阳性实锤: 两词判定曾致 bs_eod 挂死被误判已退出)。"""
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
task = sys.argv[1] if len(sys.argv) > 1 else 'sanguo-bs-daily'
|
||||
out = subprocess.run(['schtasks', '/query', '/tn', task, '/fo', 'LIST'],
|
||||
capture_output=True, timeout=30).stdout.decode('gbk', 'ignore')
|
||||
running = any(w in out for w in ('Running', '运行中', '正在运行'))
|
||||
print('%s: %s' % (task, 'RUNNING' if running else 'DONE/NOT-FOUND'))
|
||||
sys.exit(0 if running else 1)
|
||||
Reference in New Issue
Block a user