如何解决在 APScheduler 中共享作业存储有什么问题?
我确实遇到了在 APScheduler 中跨多个调度程序共享作业存储时出现的问题。
永远不能在调度程序之间共享作业存储
但不讨论与此相关的问题,有人可以解释一下吗?
此外,如果我在生产中部署包含 APScheduler 的 Django 应用程序,是否会为每个工作进程创建多个作业存储?
解决方法
这有多种原因。在 APScheduler 3.x 中,调度程序没有任何方法可以就作业存储中发生的更改相互发送信号。当调度程序启动时,它会在作业存储中查询要执行的作业,处理它们,然后询问它在下一个到期作业之前应该休眠多长时间。如果另一个调度程序添加了一个将在该唤醒时间之前执行的作业,另一个调度程序会很高兴地在该时间之后休眠,因为没有机制可以接收有关新(或更新)作业的通知。
此外,调度程序无法强制执行作业的最大运行实例数,因为它们不与其他调度程序通信。当同一个作业同时在多个调度程序进程上运行时,这可能会导致冲突。
这些缺点在即将推出的 4.x 系列中得到解决,共享作业存储的能力可以被认为是其最重要的新功能之一。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。