【问题标题】:Video uploads to S3 via Django-based API [closed]通过基于 Django 的 API 将视频上传到 S3 [关闭]
【发布时间】:2016-08-15 00:25:38
【问题描述】:

我正在创建一个托管在 heroku 上的简单 API,用于处理来自远程客户端(移动应用程序)的视频上传,目前正在使用基于 Django 的 API 的数据。

我需要视频文件名/网址既晦涩又独特。

我可以采取几种方法:

1) 让基于 Django 的 API 给我一个唯一且晦涩的文件名,使用该文件名将视频直接上传到 S3,然后将上传状态更新发布到 API。

2) 将视频从移动应用程序直接上传到 S3,向 API 发送包含视频详细信息的请求,然后生成一个任务来重命名 S3 上的视频文件名并更新我的 Django 模型中的视频 url 属性。

3) 将视频直接发布到 API,API 将处理文件命名并上传到 S3。

如果将来我需要在上传到S3之前处理视频,第一种和第二种方法都需要服务器下载已经上传到S3的视频,处理它然后重新- 上传到 S3。

在这种情况下推荐的架构是什么?

【问题讨论】:

标签: django heroku django-rest-framework tastypie


【解决方案1】:

您有几个设计选项。

  1. 如果您在处理之前直接上传到 S3,这里有一篇关于使用 python 直接上传到您的存储桶的好文章: https://devcenter.heroku.com/articles/s3-upload-python

    您需要一个单独的任务服务器(或 Lambda)来触发一个单独的作业来处理您的视频处理。这样,您的网站将保持畅通无阻且快速。您需要利用队列(AWS 中的 SQS)进行扩展。

  2. 或者,您的网络服务器可以完成所有工作:下载、处理和 s3 上传。

第二种方法更直接,但也不能处理 Web 服务器负载,扩展成本也会更高。

我建议第一种方法允许 s3 处理您的上传,让 Lambda 和 SQS 处理您的处理,并且您的 Web 服务器保持轻量级。更多的开发,因为它不是线性的,但应该更便宜地扩展并为用户提供更好的性能和响应时间。

【讨论】:

  • 非常感谢。这很有用。我更新了这个问题,使其更倾向于架构推荐请求,而不是特定技术,因为它已被搁置。
猜你喜欢
  • 2018-06-24
  • 1970-01-01
  • 2018-05-13
  • 1970-01-01
  • 2015-07-16
  • 2016-01-31
  • 1970-01-01
  • 2015-07-12
  • 2015-08-31
相关资源
最近更新 更多