我正在尝试通过Windows任务调度程序设置重复的Python任务.
当我输入'python.exe'的路径并将脚本的路径作为参数提供给windows任务调度程序时,我取得了成功(见下面的截图)
但是,我希望能够选择运行脚本的特定虚拟环境.我对venv知之甚少,我通常通过打开cmd并在所需的虚拟环境目录中运行Scripts\activate.bat来使用它.
如何使用Windows任务调度程序完成"每24小时在venvxxx中运行任务x"?
使用以下命令创建批处理文件:
c:\__full_path_to_virtualenv__\Scripts\activate.bat && python __full_path_to_python_script__.py
&&表示如果 command1成功完成,则运行 command2.
然后将该批处理文件设置为要运行的脚本.您无需在任务计划程序中设置任何其他参数(或者您也可以在批处理文件中设置它们),如果脚本必须从特定目录读取/写入并使用相对路径,则可以设置" 启动".
尽管上述mx0的答案似乎可行,但我已将Task Scheduler设置为在启动时运行flask Web应用程序。在这种情况下,手动开始可以正常工作,但手动结束则不能。结束任务将终止设置虚拟环境的cmd.exe任务,但python.exe继续运行。
我发现有效的解决方案来自以下reddit帖子,该帖子跳过了虚拟环境激活,直接调用python可执行文件:
path\to\venv\Scripts\python.exe path\to\script.py
我不确定它的鲁棒性如何,但是至少以这种方式结束任务会结束python.exe