【发布时间】:2018-01-03 17:06:03
【问题描述】:
因此,我研究并测试了多种方法以使其发挥作用,但我们的 IT 人员和我自己都不确定如何进行。最终,我需要在服务器上运行三个 python 脚本,它们查看一组 Excel 文件并扫描它们以查找错误。如果有错误,它将通过电子邮件发送给适当的人以修复它们。当通过 CMD 提示运行时,脚本本身可以正常工作,无论是单独还是在批处理文件中。当从命令提示符手动运行时,这些脚本可以完美运行。
但是,当我尝试安排其中一个脚本或批处理文件时,它们并没有完整运行。我在脚本的早期有一个打印语句,并且在 Python.exe 中运行良好,但随后脚本突然退出。这让我觉得 Python 运行良好,但脚本的内容没有通过调度程序正确运行。
为了简化故障排除,我创建了两个测试脚本 test.py 和 test2.py,并将它们放在服务器的一个简单目录 C:\Store 中。第一个脚本所做的就是在控制台打印一些内容,然后将一些内容写入文件并将其保存到根目录,之后它将等待用户输入。第二个脚本更简单,只打印 Python 的体系结构及其构建路径。从命令提示符手动运行时,这两个脚本都能正常工作。
**test.py** Does NOT Work as scheduled task
import io
print('JUST WORRRRRKKK!')
with open("//kaicmapp/Store/foobar.txt", "w") as file:
file.write("Hello!")
file.close()
raw_input("press any button")
**test2.py** Works as scheduled task
import sys
import platform
print("Python EXE : " + sys.executable)
print("Architecture : " + platform.architecture()[0])
raw_input("\n\nPress ENTER to quit")
我在这些测试脚本中使用的是什么:
- Python 2.7 32 位
- Windows Server 2012
- 具有管理员权限的 Windows 用户配置文件
- Python 2.7 exe 添加为环境变量。在安装目录中重命名为 python2.exe,因为我在服务器上也安装了 Python 3 并且希望能够以独占方式运行它们
我尝试过的事情:
- 以管理员身份运行任务计划程序
- 使用/不使用最高权限运行
- 仅在当前用户登录时运行
- 无论当前用户是否登录、密码输入是否正确都运行
- 在批处理文件中运行脚本
- here 列出的解决方案在两个脚本中产生相同的结果
我注意到的事情:
- 在调度器中使用python2 "C:\Store\test2.py" 将成功运行脚本,提示等待用户输入。调度程序的运行结果显示 操作成功完成。 (0x0)
- 使用与上述相同的任务,但运行 test.py,不会从 Python shell 产生任何输出,它只是弹出并消失。调度程序的运行结果显示函数不正确。 (0x80070001)
关于如何进行的任何想法?我对服务器管理任务不是很熟悉,所以在这里我感觉很迷茫。
【问题讨论】:
标签: python python-2.7 scheduled-tasks windows-server-2012