我有一个在 Heroku 上运行的 rails 应用程序。我正在尝试添加一个功能,让用户以 CSV 格式下载他们的一些数据。CSV 文件很大(~ 1-2 MB),而且生成速度很慢。为了不占用我的网络测功机,我将这些下载请求传递给工作测功机(使用 Resque),并在那里组装 CSV。我的 resque 工人看起来像这样。
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 和互联网上其他地方的研究,我似乎有几个选择。
- 直接从 Resque 工作人员发送数据(虽然我不确定这是否可能)
- 将数据保存到 heroku 文件系统,在控制器中检索它,然后使用
send_data
- 将其保存到数据库(postgresql),在控制器中检索它,然后使用
send_data
任何人都可以提供有关最佳方式的建议吗?谢谢。