Heroku: Serving Large Dynamically-Generated Assets Without a Local Filesystem
我对托管大型动态生成的资产和Heroku有疑问。
我的应用程序将提供其基础数据的子集的批量下载,其中包括每24小时生成一次的大文件(> 100 MB)。如果我在服务器上运行,则只需将文件写入公共目录。
但是据我了解,Heroku无法做到这一点。可以写入/ tmp目录,但是那里的文件保证期限似乎是根据一个请求-响应周期而不是后台作业来定义的。
我想使用S3托管下载文件。 S3 gem确实支持流式上载,但仅适用于本地文件系统上已经存在的文件。看来需要预先知道内容的大小,在我看来,这是不可能的。
所以这看起来像个22。我试图避免在上载到S3时在内存中创建巨大的字符串,但是S3仅支持流式上载本地文件系统上已经存在的文件。
给出一个我无法在其中写入本地文件系统的Rails应用程序,如何处理每天生成的大文件而不在内存中创建大字符串?
实际上,文件将持续更长的时间,我们不能保证可用性的原因是tmp不会在服务器之间共享,并且每个作业/进程都可以基于云负载在不同的服务器上运行。完成工作后,还需要确保删除文件。
-另一位Heroku员工
丰富,
您是否尝试过将文件写入./tmp,然后将文件流式传输到S3?
-布雷克·梅泽兰尼(Heroku)