【发布时间】:2013-06-30 06:22:39
【问题描述】:
我有一个在 Heroku 上运行的 rails 应用程序。我正在尝试添加一个功能,让用户以 CSV 格式下载他们的一些数据。 CSV 文件很大(约 1-2 MB),生成速度很慢。为了不占用我的网络测功机,我将这些下载请求传递给工作测功机(使用 Resque),并在那里组装 CSV。我的 resque worker 看起来像这样。
class Downloader
def self.perform(ids_to_download)
models = Model.where(:id => ids_to_download)
csv_data_for_client = models.to_csv
end
end
我想知道将 csv 文件发送回请求它的客户的最佳方式。
如果这段代码在 Rails 控制器中,这可以通过简单的send_data csv_data_for_client 来完成。不过,这种方法似乎不适用于 Resque 工作人员。
通过对 SO 和 Internet 上其他地方的研究,我似乎有几个选择。
- 直接从 Resque 工作人员发送数据(虽然我不确定这是否可行)
- 将数据保存到heroku文件系统,在控制器中检索,然后使用
send_data发送 - 将其保存到数据库(postgresql),在控制器中检索它,然后使用
send_data
任何人都可以提供有关最佳方式的建议吗?谢谢。
【问题讨论】:
标签: ruby-on-rails postgresql heroku resque