轨道上的红宝石 - 如何在控制器方法中访问delayed_jobs结果对象



我正在尝试学习如何在 Rails 中使用 delayed_jobs,卸载长时间运行的 Web 请求进程,并将结果存储为稍后可以在代码中访问的变量。最好的方法是什么?

在我的控制器代码中,我正在使用:

Delayed::Job.enqueue(BuildDetail.new)

然后我在lib/build_detail.rb中定义一个类(并要求控制器中的文件):

class BuildDetail
  def perform
    ...
    # some web request processing is here
    ...
    # the code returns the results of the web request processing as a variable:
    @newvar = ...
  end   
end

因此,这是我的挑战,我需要能够访问要在另一个控制器方法中使用的@newvar值。我不完全了解如何引用@newvar值。由于delayed_jobs处理是在后台处理的,我是否需要使用某种缓存过程来处理这个问题,或者是否可以直接访问变量?

如果你需要做的就是存储一个变量,你可以把它添加到memcache中。如果您已经在 Rails 应用程序中使用缓存,那将是不错的选择。您可以参考另一个问题,它讨论了使用 memcache 来存储稍后在控制器中访问的变量。

如何将来自 rails worker 的值存储在 memcached 存储中

您需要将这些数据存储在数据库,mongo,redis等中,您将无法直接访问,因为作业是在单独的进程中执行的(一旦完成就会销毁)。

相关内容

  • 没有找到相关文章

最新更新