APScheduler 执行后立即退出
APScheduler exits immediately after execution
我正在尝试为 Github 上的一个项目做出贡献,以收集资金
数据.
代码..
# time_keeper.py
from apscheduler.scheduler import Scheduler
class TimeKeeper:
def __init__(self):
self.sched = Scheduler()
def queue_job(self):
print("message send to queue")
def start_timers(self):
self.sched.start()
self.sched.add_cron_job(self.queue_job, minute='0-59')
if __name__ == "__main__":
from time_keeper import TimeKeeper
TimeKeeper().start_timers()
问题是,一旦脚本执行,它会运行一瞬间然后停止,没有回溯错误。
函数调用有误还是我遗漏了部分代码?非常感谢社区的帮助!
您的问题的正式答案是,当使用 APScheduler v2 时,调度程序的默认行为是 运行 在线程模式下,在您应用 [=10] 后立即 return =]:
https://github.com/agronholm/apscheduler/blob/2.1/apscheduler/scheduler.py#L90-L91
由于它会立即 return 并且没有任何东西可以使程序的主线程保持活动状态,因此您的程序会立即退出。您需要让您的编程 运行 保持足够长的时间,以便调度程序可以触发事件,或者您需要 运行 使用调度程序的阻塞版本。
对于这个旧版本的 APscheduler,如果您希望调度程序阻塞,您需要 运行 在独立模式下:
https://github.com/agronholm/apscheduler/blob/2.1/examples/interval.py
或者如果你想在线程模式下继续 运行ning:
https://github.com/agronholm/apscheduler/blob/2.1/examples/threaded.py
较新版本的 APScheduler 有单独的 BlockingScheduler and
BackgroundScheduler` 类,您应该查阅更新的 API 的相应示例。
我正在尝试为 Github 上的一个项目做出贡献,以收集资金 数据.
代码..
# time_keeper.py
from apscheduler.scheduler import Scheduler
class TimeKeeper:
def __init__(self):
self.sched = Scheduler()
def queue_job(self):
print("message send to queue")
def start_timers(self):
self.sched.start()
self.sched.add_cron_job(self.queue_job, minute='0-59')
if __name__ == "__main__":
from time_keeper import TimeKeeper
TimeKeeper().start_timers()
问题是,一旦脚本执行,它会运行一瞬间然后停止,没有回溯错误。
函数调用有误还是我遗漏了部分代码?非常感谢社区的帮助!
您的问题的正式答案是,当使用 APScheduler v2 时,调度程序的默认行为是 运行 在线程模式下,在您应用 [=10] 后立即 return =]:
https://github.com/agronholm/apscheduler/blob/2.1/apscheduler/scheduler.py#L90-L91
由于它会立即 return 并且没有任何东西可以使程序的主线程保持活动状态,因此您的程序会立即退出。您需要让您的编程 运行 保持足够长的时间,以便调度程序可以触发事件,或者您需要 运行 使用调度程序的阻塞版本。
对于这个旧版本的 APscheduler,如果您希望调度程序阻塞,您需要 运行 在独立模式下:
https://github.com/agronholm/apscheduler/blob/2.1/examples/interval.py
或者如果你想在线程模式下继续 运行ning:
https://github.com/agronholm/apscheduler/blob/2.1/examples/threaded.py
较新版本的 APScheduler 有单独的 BlockingScheduler and
BackgroundScheduler` 类,您应该查阅更新的 API 的相应示例。