我正在尝试学习如何在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处理是在后台处理的,我是否需要通过某种缓存过程来处理它,或者是否可以直接访问变量?
答案 0 :(得分:0)
您需要将数据存储在数据库,mongo,redis等内容中,因为作业是在一个单独的进程中执行的(并且在完成后会被销毁),因此无法直接访问。
答案 1 :(得分:0)
如果你需要做的只是存储一个变量,你可以将它添加到memcache。如果您已经在Rails应用程序中使用缓存,那将是一个很好的选择。您可以参考另一个讨论使用memcache存储变量的问题,该变量稍后在控制器中访问。