APScheduler 同时使用 cron 和即时触发器

APScheduler using cron and instant triggers together

我正在为 Raspberry Pi 编写应用程序。应用程序必须 运行 定期任务,并且还通过 socket.io 连接到主服务器以从服务器获取命令。我更喜欢 APscheduler 而不是 运行 周期性任务,因为它可以动态控制任务间隔。我使用 socketIO_client 从服务器获取 cron 语句并将它们应用于 运行ning 任务。到目前为止,它就像魅力一样。但是我需要更多功能。

在周期性任务 运行 秒之间,我想通过 socket.io 服务器事件执行 运行 任务。在此站点上,我在 问题和应用答案上发现了类似问题。通常 APscheduler 足够聪明,不会通过设置 coalesce True and/or max_instances 1 在上一个任务完成之前 运行 任务。但是使用 job.func() 方法,即使上一个任务还没有完成,作业也会开始还没说完。

基本上我想要的是 运行 一个周期性的函数,并且还能够 运行 在服务器事件的间隔之间。如果作业启动了 cron 或服务器事件,直到它完成新的作业应该被传递。有什么办法吗?

抱歉,目前 APScheduler 本身无法做到这一点。您必须创建两个作业并在它们之间共享一个锁定对象或其他东西,以确保它们不会同时 运行。