1
我的heroku网络应用程序具有从S3下载图像的功能。它的工作原理是这样的:Heroku dynos不共享文件系统
- 有一个端点(A)请求下载一个映像数组,它返回一个任务ID。
- 这些图像由A下载到我的应用程序的
tmp
Heroku文件夹中。当下载所有图像时,会创建一个zip文件。 - 虽然图像仍可以下载,但Web客户机会从点1调用带有任务ID的另一个端点(B)。此第二个端点会检查已下载了多少图像以返回进度百分比。当压缩文件已经被创建时,它会“返回”压缩文件并下载图像。
这种方法在Heroku中使用1代动力学效果很好。不幸的是,在扩展到2个dynos后,我们意识到它不再工作。原因是Heroku中的dynos不共享相同的文件系统,端点A和B由不同的dynos管理。因此,端点B中的测试仪没有找到任何文件。
有没有一种简单的方法可以让我的方法适用于多个dynos?
如果不是,我应该如何实现所描述的功能? (从S3下载zip文件中的多个图像)
是的,这可能是一种方法!我们怎么能监视下载一堆图像的进度?在我的解决方案中,我“计算”了已下载图像的数量以返回下载进度。 – 2014-11-04 19:19:48
对于进度报告,您应该使用Redis或Memcached。 dyno下载图像会将进度推向一个关键点,任何其他dynos都可以通过关键值获取进度。 Redis和memcached非常适合在dynos之间同步数据。 – Daniel 2014-11-04 19:24:13
感谢您的这些想法。明天我会考虑这一点,并酌情接受你的回答。 – 2014-11-04 19:26:22