Rails 序列化器:并行获取数据后生成动态属性?



我们的序列化程序按顺序获取数据,速度非常慢。几个属性是活动记录关联,它们发出多个数据库请求。我想使用Parallel并行获取它们,然后将它们作为属性添加到序列化程序中。我该怎么做?

例如,我在想这样的事情:

class TripSerializer < ActiveModel::Serializer
attributes :user, :bike
def user
parallel_data()[0]
end
def bike
parallel_data()[1]
end
private
def parallel_data
@data ||= Parallel.map([-> { object.user }, -> { object.bike }]) { |f| f.call }
end
end

但是,这感觉像是黑客攻击。有没有更好的方法?

我们的序列化程序按顺序获取数据,速度非常慢

您的问题是关于序列化速度的提高。

可能最好使用另一个序列化程序而不是活动模型序列化程序黑客。

例如,快速 JSON API 比活动模型序列化程序快 25 倍。

石墨也很有用。

最新更新