在我的api中,我希望每10分钟运行一次rake任务(例如8:00,8:10.)。这个任务可能需要10分钟才能执行(因此,下一个任务可以在第一个任务结束之前开始执行)。由于这个任务在开始时执行了大量耗时的查询,所以我考虑将rake任务分成两部分:
我想知道是否有方法a存储第一个rake任务的结果并在第二个rake任务中使用它?或者,还有别的方法来完成我计划建造的东西吗?
FYI,我不想使用数据库存储,因为写/读需要很多时间。
发布于 2015-09-08 00:34:49
从表面上看,这是毫无意义的。如果您的第二个任务依赖于您的第一个任务,而您的第一个任务只为第二个任务准备数据,那么您要么需要将数据存储到数据库中,要么(更明智地)将其设置为一个任务。无论您想出的其他非数据库存储解决方案都不会比数据库更好。
如果您需要它是两个任务,然后模块化的事情。使用三个任务;前两个任务可以独立运行,第三个任务将调用第一个任务并将结果传递给第二个任务。
发布于 2015-09-08 00:24:25
使用数据库表或memcache/redis存储结果。
例如,创建一个名为cached_results的表(不要使用这个名称,使用更接近您的业务逻辑的名称),并使用时间戳存储结果。或者类似地,您可以将memcache/redis与某种ttl一起使用。
https://stackoverflow.com/questions/32447532
复制相似问题