使用 Windows 任务计划程序在服务帐户中运行 python 脚本

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

注 1-所有文件都在我的配置文件中使用 cmd 运行并获取正确的结果。但不是使用 Windows 任务计划程序。

注2-我终于得到了一个线索,即 glob.glob 和 os.listdir 在我的 python 脚本中的 Windows 任务计划程序中不起作用,在该脚本中我正在连接到远程服务器,但它在我的本地使用 cmd 工作和 pycharm。

print("before for loop::", os.path.join(file_path, '*')) 
print(glob.glob( os.path.join(file_path, '*') ))
for filename in glob.glob( os.path.join(file_path, '*') ):
print("after for loop")

运行上面的 .py 脚本时,我得到:

before for loop:: c:\users\path\dir\*
在执行
print(glob.glob( os.path.join(file_path, '*') ))
时给出
"[]"
但无法找到原因?**

我通过参考 MagTun 的评论,按照 Stack Overflow 链接为 python 设置 Windows Scheduler:在 Windows 10 中的任务计划程序上安排 .py 文件

  1. 目前,我有 scheduler.py,它正在调用另外 4 个 .py 文件。

  2. 当我尝试从 Windows 任务调度程序运行 Scheduler.py 时,

它运行 Scheduler.py,然后 1 分钟后运行所有其他 4 个 .py 文件,并在一秒钟内退出。在弹性搜索中没有给出任何输出。

我将其用于 cmd 脚本:

 @echo off
cmd /k "cd /d D:\folder\env\Scripts\ & activate &  cd /d D:\folder\files & python scheduler.py" >> open.log

timeout /t 15

在上面的 cmd 命令中,当使用 Windows 任务计划程序运行时,它不会在 open.log 中保存任何内容。

具有多个 .py 子进程调度程序的脚本如下:

from apscheduler.schedulers.blocking import BlockingScheduler
import datetime
from subprocess import call
from datetime import datetime
import os
from apscheduler.schedulers.blocking import BlockingScheduler

def a():
    call(['python', r'C:\Users\a.py'])

def b():
    call(['python', r'C:\Users\b.py'])

def c():
    call(['python', r'C:\Users\c.py'])

def d():
    call(['python', r'C:\Users\d.py'])

if __name__ == '__main__':
    scheduler = BlockingScheduler()
    scheduler.add_job(a, 'interval', minutes=1)
    scheduler.add_job(b, 'interval', minutes=2)
    scheduler.add_job(c, 'interval', minutes=1)
    scheduler.add_job(d, 'interval', minutes=2)
    print('Press Ctrl+{0} to exit'.format('Break' if os.name == 'nt' else 'C'))
    try:
        scheduler.start()
        print("$$$$$$$$$$$$$$$$$$")
    except (KeyboardInterrupt, SystemExit):
        print("****#####")
        pass
python windows elasticsearch batch-file python-3.5
1个回答
-1
投票

有同样奇怪的问题。当以用户身份运行时,它就像一个魅力。对于 Windows 任务,全局查询不会返回结果。

编辑:正在通过其映射名称使用网络共享。仅在使用完整 UNC 路径(包括服务器名称)时有效。

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