比如说我有一个这样的python脚本。
from datetime import datetime
from apscheduler.schedulers.background import BackgroundScheduler
sched = BackgroundScheduler()
def SchedulerTest():
file1 = open("C:/Stuff/Stuff2/SchedTest.txt","a")
L = [str(datetime.now()) + ' | Testing this scheduler.' + '\n']
print(L)
file1.writelines(L)
file1.close()
sched.add_job(SchedulerTest, 'interval', seconds=15, start_date="2020-04-24 07:30:00", end_date="2021-01-01 10:59:00", id='id_SchedulerTest')
sched.start()
保存在这个目录下一个叫SchedTest.py的文件里。C: \Stuff\Stuff2\along with a blank text file called SchedTest. txt.
只要我的 Jupyter 笔记本处于加载状态,这个过程就会像预期的那样工作。
我如何在我的Windows PC上运行该进程并保持其运行,而不通过我的Anaconda Navigator加载的Jupyter笔记本运行脚本?
下面的似乎不成功,因为有一个空的SchedTest.txt文件为证,虽然其中任何一个都没有弹出错误信息。 1. 制作一个名为SchedTest_start.cmd的文件,内容如下,然后双击它。
echo "Starting my Scheduler Task"
call "C:\ProgramData\Anaconda3\python.exe" "C:\Stuff\Stuff2\SchedTest.py"
pause
2. 打开cmd并输入python C:\Stuff\Stuff2\SchedTest.py 3.打开cmd并输入pythonw C:\Stuff\Stuff2\SchedTest.py 4.打开cmd并输入conda run C:\Stuff\Stuff2\SchedTest.
from datetime import datetime
from apscheduler.schedulers.blocking import BlockingScheduler
sched = BlockingScheduler()
def SchedulerTest():
file1 = open("C:/Stuff/Stuff2/bl/SchedTest.txt","a")
L = [str(datetime.now()) + ' | Testing this scheduler.' + '\n']
print(L)
file1.writelines(L)
file1.close()
sched.add_job(SchedulerTest, 'interval', seconds=15, start_date="2020-04-24 07:30:00", end_date="2021-01-01 10:59:00", id='id_SchedulerTest')
sched.start()
2. 制作一个名为SchedTest_start.cmd的文件,内容如下,然后双击。
click it:<br>
echo "Starting my Scheduler Task"
call "C:\ProgramData\Anaconda3\python.exe" "C:\Stuff\Stuff2\SchedTest.py"
pause
假设你的脚本是在 C:\Users\YOUR_NAME\project
而你已经有了 virtualenv
(venv
)下的项目文件夹。
换句话说,你的项目文件夹看起来像这样。
.
├── project
├── venv
├── your_script.py
└── ... (other files)
你要做的是在项目文件夹下创建一个 .cmd
文件,就像这个例子。
my_scheduler.cmd
echo "Starting my Scheduler Task"
call "C:\Users\YOUR_NAME\project\venv\Scripts\python.exe" "C:\Users\YOUR_NAME\project\your_script.py"
pause
最后,打开 Windows Task Scheduler
并加上 .cmd
归入 basic task
子菜单。
另外,您可以考虑不使用 venv's Python executable
您可以使用您的系统 Python 可执行文件。但不推荐这样做. 规则上说:"每个项目都应该有自己的依赖关系,并且应该在适当的虚拟环境下运行。每个项目都应该有自己的依赖关系,并且应该在适当的virtualenv下运行。.
奖金。
ApScheduler
可能会因为这种行为而产生奇怪的行为。
如果一个作业的执行由于池中没有可用的线程或进程而被延迟,执行器可能会因为它运行得太晚(与最初指定的运行时间相比)而跳过它。如果在你的应用程序中很可能发生这种情况,你可能需要增加执行器中的线程进程数量,或者将 misfire_grace_time 设置调整为一个更高的值。
更多信息请访问 APScheduler文档
pythonw C:\Stuff\Stuff2\EmailScheduler_PPE.py
了解后果。只有在你信任你所使用的库的情况下才运行脚本!
pythonw
意思是用Python运行脚本而不显示控制台窗口。您可能想使用 python
首先进行调试。第三步可能在视觉上没有任何作用,但脚本应该在后台启动。