使用sched2包实现Python定时调度命令的代码运行问题求助
修复方案与说明
你的代码存在3个核心错误,修复后的可运行代码如下:
from datetime import timedelta from sched2 import scheduler # 初始化调度器实例 sc = scheduler() # 单次延迟任务:延迟1分钟执行 @sc.enter(delay=timedelta(minutes=1), priority=0) def single_delay_task(): print("this is a test at 1 min") # 周期重复任务:每1.5分钟执行一次 @sc.every(delay=timedelta(minutes=1.5), priority=0) def periodic_task(): print("this is a test at 1.5 min") # 启动调度器 sc.run()
错误点说明
- 装饰器使用逻辑错误:
sc.enter和sc.every均为函数装饰器,必须作用于可调用的函数对象,不能直接拼接执行语句,你需要把要运行的业务逻辑封装到独立函数内。 - 基础语法错误:第一个
print语句的字符串缺少右侧闭合双引号,会直接触发语法异常。 - 批量命令执行扩展:如果需要调度执行系统命令,可结合
subprocess模块实现,示例如下:
import subprocess @sc.enter(delay=timedelta(minutes=2), priority=0) def run_batch_cmd(): # 示例执行系统命令,Windows环境可替换为对应cmd指令 exec_result = subprocess.run(["echo", "batch command executed"], capture_output=True, text=True) print(exec_result.stdout)
内容的提问来源于stack exchange,提问作者jack kelly
相关产品推荐
相关产品推荐

