Python Apscheduler 没有关闭
Python Apscheduler is not shutting down
我们需要在当前作业执行时动态安排多个作业。
大概的场景是:
应该有一个调度程序每天处理 table 个应用程序(假设在世界标准时间早上 6 点)。
查找今天日期时间为 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
退出
正如 documentation 所说,它在 start() 处阻塞。 start() 调用只会 return 如果调度程序从另一个线程关闭,而您没有在任何地方执行此操作(从上面的代码片段判断)。
我们需要在当前作业执行时动态安排多个作业。
大概的场景是:
应该有一个调度程序每天处理 table 个应用程序(假设在世界标准时间早上 6 点)。 查找今天日期时间为 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
正如 documentation 所说,它在 start() 处阻塞。 start() 调用只会 return 如果调度程序从另一个线程关闭,而您没有在任何地方执行此操作(从上面的代码片段判断)。