如何在播放框架中获得预定作业的结果?

Posted

技术标签:

【中文标题】如何在播放框架中获得预定作业的结果?【英文标题】:How to get the result of a scheduled job in play-framework? 【发布时间】:2012-05-09 15:18:19 【问题描述】:

我安排了一个每隔几分钟运行一次的作业,但是当它完成后如何获得该作业的结果?

作业从数据库中获取数据并返回结果。

由于只有 Job.in()Job.now() 返回 promise 结果,我如何从每隔几分钟运行的计划作业中获取它。

我正在使用playframework 1.2.5Rc1

【问题讨论】:

您是否有理由不能将逻辑添加到查询数据库的作业中? 【参考方案1】:

您必须将结果存储在其他地方。然后,您可以在需要时查找结果。从计划的作业中“返回”结果并没有真正意义,因为您从未真正参考过它们。 API 可以为第一个计划作业返回一个承诺,但这会使所有其他计划作业一无所知。

您可以做的一件事是将计划的作业推送结果到BlockingQueue。然后在代码的其他地方,您可以调用 take() 方法,该方法会阻塞,直到它可以将某些内容从队列中拉出。这就像一个不断补充的承诺。它还可以让队列填满,而无需担心立即处理每个结果。

【讨论】:

我希望得到一个 Promise 结果,这样每次任务完成我都可以用它做点什么。 我想你可以用 BlockingQueue 实现类似的东西?让调度的作业将结果放入队列,并使用take() 阻塞,直到有结果为止。

以上是关于如何在播放框架中获得预定作业的结果?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 中获得持久视图?

如何在 Pentaho BI server v6 CE 上部署预定的 Kettle 作业

我可以安排一个包通过 Oracle 预定的作业运行吗

在播放框架 1.2.5 中,扩展作业运行后台阻止请求/响应的类

如何在 keras 中获得可重现的结果

如何隐藏 ListView 列标题?