我有一个 linux 服务器,上面有三个 play 2 框架实例,我想定期执行一个外部 Scala 脚本,该脚本可以访问所有应用程序环境(模型)并且一次只执行一次。
我想从 crontab 调用这个脚本,但我找不到任何关于如何做的文档。我知道我们可以从全局对象调度异步任务,但我希望脚本只为三个播放实例执行一次。
实际上,我想为那些了解它们的人做与 Ruby on Rails rake 任务相同的事情。
我有一个 linux 服务器,上面有三个 play 2 框架实例,我想定期执行一个外部 Scala 脚本,该脚本可以访问所有应用程序环境(模型)并且一次只执行一次。
我想从 crontab 调用这个脚本,但我找不到任何关于如何做的文档。我知道我们可以从全局对象调度异步任务,但我希望脚本只为三个播放实例执行一次。
实际上,我想为那些了解它们的人做与 Ruby on Rails rake 任务相同的事情。
为此任务创建一个action
可通过 http 访问的常规,然后您可以使用 ie。curl
在 unix'crontab
中调用该操作,它将命中第一个可用实例。
其他可能性是......使用Global
对象来安排Akka
支持的任务。在这种情况下,要确保只有一个实例会安排任务,您需要以某种方式确定应该是哪一个。如果您使用指定端口启动所有 3 个实例(每个实例始终相同),您可以阅读http.port
以允许或跳过执行。
最后,您可以使用数据库通知其他实例,该任务刚刚执行:所有 3 个实例都尝试执行 Akka 调度程序,但在执行任务之前,他们可以检查该任务是否仍有 TODO 标志。如果不是,实例将 TODO 标志设置为 false 并继续执行,否则这次只是跳过执行。
您也可以使用文件系统进行类似的方法:在执行开始时,创建标志文件以通知其他实例,这一次他们可以跳过任务。