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

Lax*_*ant 5 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)
Run Code Online (Sandbox Code Playgroud)

查询是:

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

Ale*_*olm 4

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