我有一个django应用程序,允许用户上传视频。它托管在Heroku上,以及存储在S3 Bucket上的上传文件。 在从Django app获得预先签名的请求后,我使用JavaScript直接将文件上传到S3。这是由于Heroku 30s请求超时。 无论如何,我可以通过Django后端上传大文件而不使用JavaScript并破坏用户体验吗?
答案 0 :(得分:5)
您应该考虑以下几点来解决您的问题。
答案 1 :(得分:2)
其他答案中的要点有效。对“无论如何我可以在不使用JavaScript的情况下通过Django后端上传大文件”的问题的简短回答是“并非没有切断Heroku”。
请记住,传输到你的dynos的任何数据都要经过Heroku的路由网格,这就是强制执行30秒的请求限制以保存自己的有限资源。任何类型的长时间运行事务都会占用可用于提供其他请求的带宽/计算/等,因此Heroku应用限制来帮助保持数千个动态的数据移动。上传文件时,首先会受到服务器客户端带宽的限制。然后,除了你的dyno实际处理的任何处理之外,你将受到你的dynos和S3之间的带宽的限制。
文件越大,传输数据的可能性就越大,超过30秒超时,特别是在不可靠网络上的客户端的步骤1中。创建从客户端到S3的直接路径是一种合理的妥协。