gpt4 book ai didi

ruby-on-rails - 加快从 Rails 应用程序下载 19,000 条记录

转载 作者:行者123 更新时间:2023-12-04 06:00:21 27 4
gpt4 key购买 nike

我有一个特定的要求,允许用户下载整个月的记录。这可以包括 15,000 到 20,000 条记录。我有一个优化的查询,但问题出在 html 呈现中。基本上,它遍历每条记录并按时间、日期、速度等对其进行格式化。问题是现在需要 6 分钟以上的时间才能在 html 打印窗口上实际呈现包含其内容的表格。如果我无法再优化查询或渲染,我还有哪些其他选择? (请注意,将页面保存为缓存没有意义,因为如此大量的记录每月只会下载一次)

#query
@reports = unit.reports.where("reports.time > ? and reports.time < ?",range.begin, range.end)
@reports = @reports.includes(:alerts)


#view rendering:
- @reports.each do |r|
%tr
%td.num_col #{Report.index_of(@reports, r)}
- if @history_date
%td.time_col #{time_format(r.time)}
- else
%td.time_col #{datetime_format(r.time)}
- if @unit.unit_type.name == "MarineTrac"
%td.latitude_col #{r.latitude.to_s}
%td.longitude_col #{r.longitude.to_s}
%td.address_col{:title => r.address_formatted} #{r.address_formatted(:street => false)}
- else
%td.street_col{:title => r.street} #{r.street}
%td.speed_col #{speed_formatted(r)}
%td.distance_col #{r.distance}
- if r.alerts.any?
%td.alert_col
%ul{:style => "margin: 0px; padding: 0px; list-style-type: none;"}
- r.alerts.each do |alert|
%li
%span{:class => "#{alert.class_for_severity}"}= alert_full_str(alert)
- else
%td.alerts_col{:class => "severity_none"} None
%td.signal_col #{r.signal_formatted}
%td.fix_col #{r.gps_valid_str}

最佳答案

我建议将报告生成提取到后台进程中。

基本上,使用类似于 Sidekiq 的东西在用户请求时将要生成的报告排入队列。然后您可以立即返回并告诉他们类似“您的报告正在生成中。完成后您将收到一封电子邮件。”

您的 Sidekiq 工作人员会完成所有工作,并在完成后简单地向用户发送一封电子邮件。

关于ruby-on-rails - 加快从 Rails 应用程序下载 19,000 条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17536800/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com