Python Apscheduler没有关闭

时间:2016-01-01 13:16:47

标签: python shutdown apscheduler

我们要求在当前作业执行时动态安排多个作业。

近似情景是:

应该有一个调度程序每天通过一个应用程序表(假设在UTC时间上午6点)。 找到今天的datetime为resume_dttime的用户 动态安排该用户的工作,并在今天的resume_dttime开始他的服务 所以我的代码是:

from apscheduler.schedulers.blocking import BlockingScheduler
sched = BlockingScheduler()

def scheduled_job():
    """
    """
    liveusers = todays_userslist() #Get users from table with todays resume_dttime
    for u in liveusers:
        user_job = get_userjob(u.id)
        runtime = u.resume_dttime #eg u.resume_dttime is datetime(2015, 12, 13, 16, 30, 5)
        sched.add_job(user_job, 'date', run_date=runtime, args=[u.name])


if __name__ == "__main__":
  scheduled_job()
  sched.start()
  sched.shutdown(wait=True)

代码运作良好(一项工作)。没有检查多个作业,但它根本没有停止。我尝试删除for循环。此外,已经完成了google上的许多查询。但没有运气:( 要退出,每次都需要退出CTrl+C

1 个答案:

答案 0 :(得分:2)

它在{(3}}所说的start()处阻塞。 start()调用只有在调度程序从另一个线程关闭时才会返回,而这个线程在任何地方都没有(从上面的代码片段判断)。