我在 Play Framework 中使用 Akka 而不是 Job,来安排代码每 X 秒运行一次。我的代码在 Heroku 免费层上运行,我相信它有时会暂停一段时间,然后由 Heroku 系统恢复。
是否有可能当 Heroku dyno 醒来时,它注意到它有一些“它欠”的事件并同时运行它们?我的代码不是线程安全的,并且假定在任何给定时间只会运行一个事件。
这是在播放开始时运行的演员设置:
object Global extends GlobalSettings {
override def onStart(app: Application) {
val monitorActor = Akka.system.actorOf(Props[MonitorLoadJob], name = "monitorLoad")
Akka.system.scheduler.schedule(0 seconds, 10 seconds, monitorActor, Tick)
}
}