我的rails应用程序中有导入功能,可以导入CSV文件并相应地更新记录。随着此文件变大,请求需要更长时间并最终超时。因此,我选择实现delayed_job来处理长时间运行的请求。唯一的问题是,当作业运行时,会抛出错误消息Errno::ENOENT: No such file or directory
。这是因为我的解决方案适用于内存中的CSV文件。
有没有办法将CSV文件保存到我的heroku服务器(并在导入后将其删除)?
答案 0 :(得分:1)
Heroku的文件系统是短暂的,即它们上的内容不会持续存在,并且它们不会在dynos中共享。
如果您的延迟作业正在另一个dyno上运行(如果它已经不存在则应该如何运行),则无法访问web dyno磁盘上存在的csv。
一种解决方法是创建一个为CSV提供服务的操作。然后,您可以在作业开始之前使用一些HTTP库来下载CSV。
答案 1 :(得分:1)
您无法在dyno的文件系统中存储文件,并从另一个dyno中读取它们。
您可以将临时文件存储在AWS S3等外部云存储中,并从延迟的作业中读回来。