轮询新 S3 对象的最佳方法?
Posted
技术标签:
【中文标题】轮询新 S3 对象的最佳方法?【英文标题】:Best approach to poll for new S3 objects? 【发布时间】:2012-12-02 03:04:28 【问题描述】:所以我使用 S3 作为图像存储,图像通过各种软件不断上传到存储桶。
我还在构建一个 Rails 应用程序,让人们可以浏览 S3 上的图像库,但出于性能问题,我需要在本地数据库中保留一份有关图像的信息副本,因此我不必连接到每当有人查看图库时,S3 的 API。
现在,在我的数据库上没有信息的 S3 上获得新对象通知的最佳方法是什么?
我想创建一个工作人员来不断获取所有 S3 对象的列表并注册我们没有的对象,但是 S3 每个 API 请求限制为 1000 个对象,我在 @987654321 上找不到方法@ 指定下一个请求的偏移量,直到获取所有对象。
有人有想法吗?
附言我正在使用this gem 连接到 S3
【问题讨论】:
【参考方案1】:如this answer here 和S3 documentation 中所述,S3 不允许在将新文件上传到 S3 后发出通知。通过轮询,您迟早会达到一些限制。
我会尝试不同的方法。转到您的上传软件并在那里添加通知。例如,您可以向 SNS 发送通知,告知正在完成新的上传。您可以订阅此 SNS 队列,然后在您的服务器上使用后台任务并在数据库中填写必要的信息。
但是,如果您想采用轮询方式,请查看您链接的文档页面中结果对象中的 Marker
属性。每个请求都会返回一个标记,如果您将此标记提供给下一个请求,您将获得第一个查询中不可用的下一个对象。
【讨论】:
谢谢,但是marker
返回nil
,我们得到了数千个对象,返回的对象列表大小为 1000,这意味着有更多结果,但标记为 nil。很奇怪。以上是关于轮询新 S3 对象的最佳方法?的主要内容,如果未能解决你的问题,请参考以下文章
轮询与 AsyncCallback 回调 - 慢速 Web 服务的最佳方法?
让javascript知道php服务器端登录/注销的推荐方法?