Python APScheduler在执行后立即退出

Python APScheduler在执行后立即退出,python,apscheduler,Python,Apscheduler,我正试图为Github上的一个项目捐款,以收集资金 数据 代码 #time_keeper.py 从apscheduler.scheduler导入计划程序 班级计时员: 定义初始化(自): self.sched=Scheduler() def队列_作业(自身): 打印(“消息发送到队列”) def启动定时器(自身): self.sched.start() self.sched.add\u cron\u job(self.queue\u job,分钟=0-59') 如果名称=“\uuuuu main

我正试图为Github上的一个项目捐款,以收集资金 数据

代码

#time_keeper.py
从apscheduler.scheduler导入计划程序
班级计时员:
定义初始化(自):
self.sched=Scheduler()
def队列_作业(自身):
打印(“消息发送到队列”)
def启动定时器(自身):
self.sched.start()
self.sched.add\u cron\u job(self.queue\u job,分钟=0-59')
如果名称=“\uuuuu main\uuuuuuuu”:
从计时器导入计时器
计时器().启动计时器()
问题是,一旦脚本被执行,它会运行一秒钟然后停止,没有回溯错误


函数调用是否错误,或者我是否缺少部分代码?非常感谢社区的帮助

您的问题的正式答案是,在使用APScheduler v2时,调度程序的默认行为是以线程模式运行,在应用
.start()
后,线程模式将立即返回:

由于它立即返回,并且没有任何东西使程序的主线程保持活动状态,因此程序立即退出。您需要让程序运行足够长的时间,以便调度器可以触发事件,或者您需要使用阻塞版本的调度器运行

对于此旧版本的ApsScheduler,如果希望计划程序阻止以下操作,则需要在独立模式下运行:

或者,如果要继续在线程模式下运行,请执行以下操作:


较新版本的APScheduler有单独的
BlockingScheduler和
BackgroundScheduler`类,您应该参考相应的示例以了解更新的API

可能您使用的是较旧版本的ApsScheduler,但导入不适用于我的
调度程序
。也就是说,调度器有多种风格。您可能需要一个
BackgroundScheduler
,除非您的代码能够在
.start()
之后执行并阻止。在这种情况下,我可能会在自己的线程或进程中启动调度程序。谢谢您的回复,我正在使用APScheduler 2.1.2。@JoshAdel我刚刚用较新的3.x版试用了它,从APScheduler.scheduler导入调度器从APScheduler.schedulers.background导入后台调度器从APScheduler.schedulers.BackgroundScheduler和
sched=scheduler()
更改为
sched=BackgroundScheduler()
我得到了相同的结果。如果您使用的是
BackgroundScheduler
,那么您需要让代码执行一些操作以保持主线程的活动状态,否则它将立即退出。请参阅回购协议目录中的其他示例。感谢您的详细解释,这无疑使我走上了正确的道路。