APScheduler无法启动?

| 我想在夜间运行python脚本,因此我在考虑使用APScheduler。我将从第二天晚上1点开始运行,每天晚上运行一次 我的调度程序脚本如下所示(scheduler.py):
from apscheduler.scheduler import Scheduler
from datetime import datetime, timedelta, time, date

def myScript():
    print \"ok\"

if __name__ == \'__main__\':
    sched = Scheduler()
    startDate = datetime.combine(date.today() + timedelta(days=1),time(1))
    sched.start()
    sched.add_interval_job(myScript, start_date = startDate, days=1)
在外壳中,我这样做:
python myScheduler.py & disown
(我正在远程运行它,因此我想在后台运行它并将其删除。 随即,与其他所有python脚本一样,该行下方会出现一个数字(PID)。但是当我做ps -e | grep python,该号码不存在。我试图做
kill -9 PID
,但收到一条消息说该工作不存在。 调度程序正在运行吗?如果是,我该如何阻止它?如果没有,我在做什么错?     
已邀请:
您必须保持脚本运行,否则在ѭ3之后,脚本将结束并停止。 添加一个
import time

while True:
    time.sleep(10)
sched.shutdown()
之后,然后调度程序仍然有效。     
正确的解决方案是告诉调度程序不要作为守护程序运行:
sched = Scheduler()
sched.daemonic = False
要么
sched = Scheduler()
sched.configure({\'apscheduler.daemonic\': False})
    
这是我的方式:
from apscheduler.scheduler import Scheduler
def mainjob():
    print(\"It works!\")

if __name__ == \'__main__\':
    sched = Scheduler()
    sched.start()
    sched.add_interval_job(mainjob,minutes=1)
    input(\"Press enter to exit.\")
    sched.shutdown()
    
如果使用版本2.1.0,则还可以将standalone = True参数传递给Scheduler构造函数。详细文件可以在这里找到
from apscheduler.scheduler import Scheduler
from datetime import datetime, timedelta, time, date

def myScript():
    print \"ok\"

if __name__ == \'__main__\':
    sched = Scheduler(standalone=True)
    startDate = datetime.combine(date.today() + timedelta(days=1),time(1))
    sched.add_interval_job(myScript, start_date = startDate, days=1)
    sched.start()
    
我安装了apscheduler v3,这就是我要做的。
from apscheduler.schedulers.background import BackgroundScheduler  
def mainjob():
    print(\"It works!\")

if __name__ == \'__main__\':
    sched = BackgroundScheduler()
    sched.start()
    sched.add_job(mainjob, \'interval\', seconds=120)
    input(\"Press enter to exit.\")
    sched.shutdown() 
    

要回复问题请先登录注册