Python Apscheduler - 动态调度作业(嵌套)

时间:2015-12-11 08:08:37

标签: python cron scheduled-tasks apscheduler

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

近似情景是:

  • 应该有一个调度程序每天通过一个应用程序表(假设在UTC时间上午6点)。
  • 查找今天的日期时间为resume_dttime
  • 的用户
  • 为该用户动态安排作业,并在今天开始提供服务resume_dttime

所以我的代码是:

from apscheduler.schedulers.blocking import BlockingScheduler
sched = BlockingScheduler()
@sched.scheduled_job('cron', day_of_week='mon-fri', hour=6)
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__":
  sched.start()
  sched.shutdown(wait=True)

查询是:

  • 这是动态添加作业的好方法吗?
  • 问题是,可能有100个或更多用户。那么,动态添加100个工作是个好主意吗?
  • 还有其他方法可以达到这个目的吗?

1 个答案:

答案 0 :(得分:2)

APScheduler 3.0专门设计用于高效处理大量预定作业,因此我相信您使用它的预期方式是有效的。