0

我有一个 linux 服务器,上面有三个 play 2 框架实例,我想定期执行一个外部 Scala 脚本,该脚本可以访问所有应用程序环境(模型)并且一次只执行一次。

我想从 crontab 调用这个脚本,但我找不到任何关于如何做的文档。我知道我们可以从全局对象调度异步任务,但我希望脚本只为三个播放实例执行一次。

实际上,我想为那些了解它们的人做与 Ruby on Rails rake 任务相同的事情。

4

1 回答 1

0

为此任务创建一个action可通过 http 访问的常规,然后您可以使用 ie。curl在 unix'crontab中调用该操作,它将命中第一个可用实例。

其他可能性是......使用Global对象来安排Akka支持的任务。在这种情况下,要确保只有一个实例会安排任务,您需要以某种方式确定应该是哪一个。如果您使用指定端口启动所有 3 个实例(每个实例始终相同),您可以阅读http.port以允许或跳过执行。

最后,您可以使用数据库通知其他实例,该任务刚刚执行:所有 3 个实例都尝试执行 Akka 调度程序,但在执行任务之前,他们可以检查该任务是否仍有 TODO 标志。如果不是,实例将 TODO 标志设置为 false 并继续执行,否则这次只是跳过执行。

您也可以使用文件系统进行类似的方法:在执行开始时,创建标志文件以通知其他实例,这一次他们可以跳过任务。

于 2013-02-12T21:44:18.883 回答