当前位置: 首页 > 知识库问答 >
问题:

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

鞠嘉志
2023-03-14

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

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

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

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

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

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

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

>

  • 程序:cmd

    参数:/C C:\ python 27 \ python . exe C:\ path \ of \ script . py

    在 中执行:C:\path\of\

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

  • 共有3个答案

    单于智
    2023-03-14

    CMD作为中间启动器,似乎没有正确的解决方案。在任务调度程序GUI中有一个[End]命令,单击该命令将始终终止CMD/batch文件,留下生成的python。exe进程到吸管。

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

    车辰龙
    2023-03-14

    在我看来这像是一只虫子。尝试在任务管理器下查找python控制台。如果不存在,那么程序已经成功退出。

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

    钱锐
    2023-03-14

    正如Gaurav Pundir所提到的,添加了<code>sys。退出(0)应正确结束脚本,从而结束任务。但是,您确实需要添加带有导入sys的sys库,以便使用sys.exit(0)。希望这有帮助!

     类似资料:
    • 我有一个手工编写的脚本。但是,当我在Task Scheduler中调度它时,脚本永远不会结束,因此下次尝试运行时,它会失败,因为之前的实例仍在运行。第一次或手动运行时,脚本本身需要几秒钟才能完成。以下是脚本: 使用以下设置调度脚本: 无论用户是否登录,请运行(用户帐户已被授予作为批处理程序登录权限) 以最高权限运行 每日触发,每 2 分钟一次 要执行的操作: 启动程序 powershell -文件

    • 这是我第一次安排python脚本。我的目标是安排我的python脚本每10分钟运行一次。 缅因派 我在windows任务计划程序中创建了一个任务,但我的脚本没有运行(我知道脚本正在运行,因为我可以手动运行它)。我试图解决这个问题已经有好几个小时了,但一点运气都没有。 首先选择python路径,然后选择项目的文件路径并选择。我想跑步。例如,我选择每10分钟触发一次。 完成上述步骤后,什么都不会发生。

    • 但是由于网络和其他一些技术问题,我在python脚本中的excel文件将无法在计划时间内更新,因此我需要手动运行python脚本,让我知道一旦文件更新,任何选项都是avl来运行任务调度程序。 例如:我运行python脚本的计划时间是每天上午9点,但我同意如果excel文件未在上午9点在python上更新,任务调度器需要在9点30分运行 提前谢谢。

    • 今天我想测试Meteor的android构建是如何工作的。所以我安装了Meteor,并按照他们的说明创建了一个测试待办应用程序。然后,根据这里的公关说明,我安装了Java SDK,并确认我在安装Visual Studio 2015时拥有Android SDK。 然后是我的第一个问题。当我试图从命令提示符运行时。我得到了错误无法找到模块的is属性,并很快学会了通过cd'ing到缺少模块的目录并运行来

    • 我在weblogic 12c中配置了我的域。当我尝试启动服务器时,它们会出现(状态更改为正在运行),并且web服务处于活动状态。但是,weblogic控制台中最后一个操作的状态始终是“任务进行中” 未更改为已完成的可能原因是什么。 此外,在我重新启动管理后,它会变为无。

    • 问题内容: 抱歉,这听起来太简单了。我是Java的新手。 这是我用来检查的一些简单代码。当我运行它时,我无法停止它。我以为如果不写任何输入并按,就可以避免循环。 有人可以向我解释在这种情况下如何工作吗? 问题答案: 从System.in读取时,默认情况下是从键盘读取的,这是一个无限的输入流……它的行数与用户希望输入的行数相同。我认为发送EOF的控制序列可能会起作用,例如CTL-Z(或者是CTL-D