Ruby 在 Rails - 是否可以存储 Rake 任务的结果?

Ruby On Rails - Is it possible to store the result of a Rake Task?

在我的 api 中,我想 运行 每 10 分钟执行一次抽取任务(例如在 8:00、8:10..)。此任务最多可能需要 10 分钟才能执行(因此,下一个任务可以在第一个任务结束之前开始执行)。 由于这个任务一开始执行了很多耗时的查询,所以我想把我的rake任务分成两个:

  1. 第一个将执行这些耗时的查询。我将每 10 分钟触发一次此任务(在 8:05、8:15...)。
  2. 我想在第二个任务中使用在第一个 rake 任务中执行的查询结果(将在 8:10、8:20 触发)。

我想知道是否有办法存储第一个 rake 任务的结果并在第二个任务中使用它?或者,还有其他方法可以完成我计划构建的内容吗?

仅供参考,我不想使用数据库存储,因为 writing/reading 需要很多时间。

使用数据库 table 或 memcache/redis 来存储结果。

例如,创建一个名为cached_results的table(不要使用此名称,使用更接近您的业务逻辑的名称)并使用时间戳存储结果。或者类似地,您可以将 memcache/redis 与某种 ttl

一起使用

从表面上看这没有任何意义。如果你的第二个任务依赖于你的第一个任务,而你的第一个任务只为第二个任务准备数据,那么你要么 需要 将数据存储在数据库中,要么(更明智地)将其作为一个任务。您提出的任何其他非数据库存储解决方案都不会比数据库更好。

如果你需要它是两个任务,那就模块化吧。使用三个任务;前两个可以独立 运行,第三个将调用第一个并将结果传递给第二个。