【问题标题】:Keep an instance of an object for the whole Rails server?为整个 Rails 服务器保留一个对象实例?
【发布时间】:2021-05-01 06:52:51
【问题描述】:

基本上,我有一个与本地 RPC 服务器交互的简单类。叫它RPC_Class。 该网站将托管的每个用户都会发出请求,要求 Rails 服务器调用 RPC 客户端。

这个类需要这样实例化

rpc = RPC_Class.new('localhost:4325')

然后我调用它

puts rpc.getbalance

现在,有三个选项:

  • 为每个需要的请求创建一个新实例(显然是一个糟糕的解决方案)
  • 为每个用户的会话创建一个新实例
  • 为整个服务器创建一个实例

我认为选项三是最具表现力的选项。我在哪里初始化这个类,以便我可以在整个服务器代码中使用它?

【问题讨论】:

  • 或选项 4 - 不要过早优化。

标签: ruby-on-rails rpc json-rpc


【解决方案1】:

我认为你应该使用 Rails 缓存来处理这个用例。您可以在第一次调用 API 时缓存响应,并将缓存的响应用于之后收到的所有调用。 你可以这样写一个方法:

def fetch_rpc_balance
  Rails.cache.fetch("rpc_balance", expires_in: 24.hours)
    rpc = RPC_Class.new('localhost:4325')
    puts rpc.getbalance
  end
end

现在,如果您在逻辑中使用 fetch_rpc_balance 方法,它将仅在第一次调用 API 并从第二次调用开始返回缓存的响应。

【讨论】:

  • 那么每次余额更新时你只需清除缓存键-Rails.cache.delete('rpc_balance')
猜你喜欢
  • 1970-01-01
  • 2023-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多