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