ruby-on-rails - 为整个 Rails 服务器保留一个对象实例?
问题描述
本质上,我有一个与本地 RPC 服务器交互的简单类。调用它RPC_Class
。该网站将托管的每个用户都会发出需要 Rails 服务器调用 RPC 客户端的请求。
这个类需要被实例化
rpc = RPC_Class.new('localhost:4325')
然后我打电话给它
puts rpc.getbalance
现在,有三个选项:
- 为每个需要的请求创建一个新实例(显然是一个糟糕的解决方案)
- 为每个用户的会话创建一个新实例
- 为整个服务器创建一个实例
我认为选项三是最具表现力的选项。我在哪里初始化这个类,以便我可以在整个服务器代码中使用它?
解决方案
我认为你应该使用 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 并从第二次调用开始返回缓存的响应。
推荐阅读
- sql - 我不想显示表的前 3 条记录,那么该查询是什么
- javascript - 如何使 WFS 图层在传单地图上可编辑并且编辑将反映在地理服务器上?
- laravel - Laravel 6 的公共文件夹中不存在 CSS 和 JS 文件夹
- yum - 当我在 centos8 系统中使用 yum install python-devel -y
- python - 如何修改 Python 提示符返回的文本描述?
- java - 我正在尝试使用回收器视图从 fire base 数据库中检索数据,但出现错误
- arrays - 系统verilog约束中的内部运算符中的数组切片
- clickhouse - Clickhouse 在“合并聚合数据”时很慢
- javascript - react-native 中的自定义警报控件
- asp.net-core - 将 .net core 2.1 升级到 .net core 2.2 时,Linq to excel 不起作用