Python 脚本在任务调度程序中永远不会结束

问题描述 投票:0回答:5

我正在尝试设置一个自动执行的Python代码。

我从要执行的小代码开始:

import datetime
with open("out.txt","a") as f:
    f.write(datetime.datetime.now().isoformat())

任务将正常启动并执行(文件被修改),但它永远不会在任务调度程序中结束。

thisthis存在于SO中,但没有真正的答案。这些线程中提出的唯一解决方法是在 Windows 中给定时间后强制结束任务,但这需要知道 python 脚本将花费多长时间,而我的实际任务情况并非如此。

任务调度程序如何知道Python脚本已经完成?

我在任务计划程序中按以下方式运行它:

  • 程序:cmd

  • 参数:/c C:\python27\python.exe C:\path\of\script.py

  • 执行于:C:\path\of\

我尝试了一些变体,比如执行 python 而不是 cmd,但它没有改变任何东西。我曾希望 /c 会强制任务关闭。

python windows scheduled-tasks
5个回答
3
投票

正如 Gaurav Pundir 提到的,添加

sys.exit(0)
应该正确结束脚本,从而结束任务。但是,您确实需要使用
import sys
添加 sys 库才能使用
sys.exit(0)
。希望这有帮助!


3
投票

我遇到了同样的问题,python 文件没有在任务计划程序中停止。我导入了 sys 并编写了 sys.exit(0) 但我仍然遇到同样的问题。 最后,我决定按“更新”,这解决了我的问题;任务的状态是“就绪”,而不是“正在运行”。有关信息,我使用 Windows 11。


1
投票

对我来说它看起来像一个错误。 尝试在任务管理器下查找 python 控制台。 如果不存在则程序已成功退出。

我在 Windows 10 上也有同样的问题,python 脚本运行成功,任务管理器下没有 python 控制台,但计划任务状态仍然显示“正在运行”


1
投票

对于 CMD 作为中间启动器的此类问题似乎没有正确的解决方案。 任务计划程序 GUI 中有一个 [End] 命令,单击它将始终终止 CMD/批处理文件,将生成的 python.exe 进程留给稻草。

真正的问题:cmd 似乎没有任何方法将终止信号传递给 python.exe.. 并且任务引擎也无法可靠地确定 python.exe 是否还活着。


0
投票

我有一个类似(相同?)的问题,任务计划程序状态表明我的 python 程序在终止后仍在运行。

就我而言,结果是 Windows 问题。更新状态好像失败了。

简单的修复方法是完全退出任务计划程序。

重新进入时,任务计划程序状态显示为“就绪”。

© www.soinside.com 2019 - 2024. All rights reserved.