Python定时脚本每2分钟运行失败:无数据输出问题求助
问题排查与解决方案
核心问题分析
第二段代码无数据输出的主要原因是:show_datafr 函数内最后一行的 df 仅创建了DataFrame对象,但没有主动输出它。在脚本环境中(非交互式 notebook),单独写变量名不会自动显示内容,必须显式调用输出方法。
修复步骤
添加显式输出
在函数内最后一行添加print(df)(Jupyter环境可改用display(df)),确保DataFrame内容被输出:def show_datafr(): ticks = api.ticks(api.Contracts.Stocks["2330"], "2022-08-09") df = pd.DataFrame({**ticks}) df.ts = pd.to_datetime(df.ts) df = df[df.volume>200] print(df) # 新增:显式打印DataFrame验证定时任务是否触发
在函数开头添加日志打印,确认schedule是否正常调用函数:def show_datafr(): print(f"[{datetime.datetime.now()}] 开始获取数据...") # 新增:打印触发时间 ticks = api.ticks(api.Contracts.Stocks["2330"], "2022-08-09") df = pd.DataFrame({**ticks}) df.ts = pd.to_datetime(df.ts) df = df[df.volume>200] print(df)调整定时间隔为2分钟
将原代码中的秒级调度改为目标的分钟级:schedule.every(2).minutes.do(show_datafr) # 改为每2分钟执行一次添加异常处理(可选但推荐)
捕获API调用或数据处理中的异常,避免程序静默失败:def show_datafr(): try: print(f"[{datetime.datetime.now()}] 开始获取数据...") ticks = api.ticks(api.Contracts.Stocks["2330"], "2022-08-09") df = pd.DataFrame({**ticks}) df.ts = pd.to_datetime(df.ts) df = df[df.volume>200] print(df) except Exception as e: print(f"[{datetime.datetime.now()}] 执行出错:{str(e)}")
完整修复后的代码
import pandas as pd import numpy as np import datetime import schedule import time def show_datafr(): try: print(f"[{datetime.datetime.now()}] 开始获取数据...") ticks = api.ticks(api.Contracts.Stocks["2330"], "2022-08-09") df = pd.DataFrame({**ticks}) df.ts = pd.to_datetime(df.ts) df = df[df.volume>200] print(df) except Exception as e: print(f"[{datetime.datetime.now()}] 执行出错:{str(e)}") schedule.every(2).minutes.do(show_datafr) while True: schedule.run_pending() time.sleep(1)
内容的提问来源于stack exchange,提问作者David Lin
相关产品推荐
相关产品推荐

