工作中有时需要定时执行一些规律性的脚本操作,比如,清除磁盘垃圾、定时下载任务等。这些任务执行虽然简单,但是需要人力进行日常维护。通常有两种方式可以方便处理这类型任务:
- 以本机作为脚本任务的执行者,开启电脑后,通过ide运行任务,但是每次开机都需要手动执行,或者将程序打包成exe程序再放入启动文件夹。
- 以本机作为服务器,通过任务计划的触发器,自动执行指定任务,不需要每次开机后再手动执行。
下面将介绍第二种方式——任务计划
打开计划任务程序
创建一个新的任务计划文件夹(推荐)或在“任务计划程序库”中创建基本任务:提一下”创建基本任务”和”创建任务”的区别是一个有引导界面,一个直接弹出设置界面直接设置。
- 输入任务名称和描述。
- 选择触发器,修改触发器触发的时间和间隔,这里暂时只能创建一个触发器,我们可以创建完任务计划后进行添加或修改触发器。
- 选择任务操作,并填入相关参数,这里很重要,它可以决定你的任务计划是否正常执行,原则上越简单越好(后面会进行详解);然后点击完成。
- “创建基本任务”完成后,我们还需要对其进行一些的修改;选择任务点击属性对任务进行修改。
“操作”项暂不做修改;”条件”项也比较简单,都是字面意思,这里不做讲解;
note:每次手动运行任务后,若任务状态没有更改成预期状态,可通过右键任务选择“刷新”选项进行任务状态的刷新。
- 关于”操作”项中的设置需要注意:由于我们使用的是.bat脚本中通过python程序调用.py脚本,因此这里的”程序或脚本”填入 XXX\test.bat(不加引号),”添加参数(可选)”为空,“起始于(可选)”则是.py文件所在的目录,而不是执行程序或者.bat脚本所在的目录,否则执行的结果会出错;若不填(缺省状态),那么自动将该处的目录位置定位到”程序或脚本”的目录位置。并且调用的程序需要传入参数,例如”程序或脚本”填入Python编译器路径 C:\Python27\python.exe ,而”添加参数(可选)”为.py文件,那么“起始于(可选)”则是.py文件所在的目录。最后说一下,任务计划中所用到的所有的文件最好放置在本地路径。
实践踩坑和解决办法
在这次工作中由于需要每天调用pythonAPI对程序的服务端进行调整,因此使用了任务计划调用bat脚本的方式执行任务。该bat脚本中,仅简单的一句'XXX/python.exe XXX/XXX/xxx.py'---使用编译器编译python脚本,该任务在我本机上执行没有任务问题,于是将任务计划部署到农场机器上,此时任务就出现了问题:创建的任务不会成功执行,或者执行结果不为'成功执行(0X0)',或者执行结果为'成功执行(0X1)'(失败状态)或者直接失败,找了很久的原因,排除几乎所有的可能性(计算机休眠、计算机系统配置不对、任务权限不够、bat脚本有问题、.py脚本有问题、任务手动运行后状态没有及时切换导致新实例不能创建、不能访问网络盘资源、脚本“起始于(可选)”参数不对、执行程序带引号等等)。最后本着"越简单越好"的原则,直接将bat脚本拆开,将python编译器的位置填入"程序或脚本","添加参数(可选)"填入.py脚本,“起始于(可选)”填入.py脚本路径,问题才得到解决。
猜测和计算机系统有关,由于我本机使用的是Windows10 的操作系统,而农场机使用的是Windows server2012 的操作系统。
参考
官方介绍:https://forsenergy.com/zh-cn/gpmc/html/688d2d42-454a-4e2e-90c0-557f959d49b0.htm
参考文章:https://www.jianshu.com/p/c627c77f6ea3