fix: install_stdio_hook幂等化——库文件(market_regime等)模块级_msh()被import时不再重复包装stdout(双写根因:per_stock_reassess→strategy_lifecycle→market_regime链,N层hook=N个buffer各flush一次=broadcast整块重复)
This commit is contained in:
@@ -211,7 +211,12 @@ def _job_title(script):
|
|||||||
|
|
||||||
|
|
||||||
def install_stdio_hook(script_name=None):
|
def install_stdio_hook(script_name=None):
|
||||||
"""在脚本入口调用:重定向 stdout 到 messenger 通道控制"""
|
"""在脚本入口调用:重定向 stdout 到 messenger 通道控制。
|
||||||
|
2026-08-24 幂等化:已 hook 则直接复用不重复包装——库文件(如 market_regime)被 import
|
||||||
|
时其模块级 _msh() 会变成 no-op,否则 stdout 被包 N 层、N 个 buffer 各 flush 一次,
|
||||||
|
broadcast 整块重复(双写根因,per_stock_reassess→strategy_lifecycle→market_regime 链实锤)。"""
|
||||||
|
if isinstance(sys.stdout, _MessengerStdout):
|
||||||
|
return sys.stdout.channel # 已 hook:幂等返回,不再包装
|
||||||
if script_name is None:
|
if script_name is None:
|
||||||
script_name = os.path.basename(sys.argv[0]) if sys.argv else "mofin"
|
script_name = os.path.basename(sys.argv[0]) if sys.argv else "mofin"
|
||||||
sys.stdout = _MessengerStdout(sys.stdout, script_name)
|
sys.stdout = _MessengerStdout(sys.stdout, script_name)
|
||||||
|
|||||||
Reference in New Issue
Block a user