Python Heroku-使用AWS处理下载的文件需要30秒以上

Python Heroku-使用AWS处理下载的文件需要30秒以上,python,amazon-web-services,flask,heroku,amazon-s3,Python,Amazon Web Services,Flask,Heroku,Amazon S3,所以我在我的网站上使用AWS作为云。他的主要目的是作为一个存储单元s3,在我有一个5MB或7mb的大文件超过Heroku的30秒时间限制并发送H12错误之前,一切都很正常 问题就从这里开始。在这里,我正在将文件写入云。而且,由于编写该文件需要很长时间,因此该网站继续尝试加载该文件,但从未尝试过。文件\u to \u put为字节类型。如何修复它,以便将较大的文件上载到云 注意,我需要读取该文件,但首先我需要修复此问题 问题 后端框架-flask这是工作进程类型和任务队列的来源,因此您可以将芹菜+

所以我在我的网站上使用AWS作为云。他的主要目的是作为一个存储单元s3,在我有一个5MB或7mb的大文件超过Heroku的30秒时间限制并发送H12错误之前,一切都很正常

问题就从这里开始。在这里,我正在将文件写入云。而且,由于编写该文件需要很长时间,因此该网站继续尝试加载该文件,但从未尝试过。文件\u to \u put为字节类型。如何修复它,以便将较大的文件上载到云

注意,我需要读取该文件,但首先我需要修复此问题 问题

后端框架-flask

这是工作进程类型和任务队列的来源,因此您可以将芹菜+Redis与flask或类似的东西结合使用

基本上,你把写文件的任务排在一个任务队列中,比如说Redis,你的web进程会立即向网站访问者返回200ok。同时,工作进程从队列中选择任务,并开始执行耗时的任务,将文件写入S3

在前端,您必须要求访问者在一段时间后返回,或者显示等待微调器或向访问者指示文件尚不可用的内容。一旦文件被写入,您可以发送一个刷新页面的信号,或者您可以在网页上使用JavaScript检查文件是否准备就绪,比如说每秒钟一次,或者简单地让访问者在一分钟后刷新页面


我知道这一切听起来很复杂,但事情就是这样。您的web进程不应该等待长时间运行的任务。

我已经在使用redis,但redis如何帮助这个进程?我需要将一个二进制文件写入AWS。我是否需要将文件保存在redis变量中并使用它?redis可用于多种方式。一个是缓存,您可能正在进行缓存,另一个是作为任务队列或也称为消息代理。您不将文件保存在Redis中,只保存队列中的一项,即此任务要完成,然后芹菜选择任务。这里要解释的太多了,你必须遵循一些教程。这看起来对初学者很友好:所以我确实用芹菜发送了文件,但它没有立即返回200好的,我需要返回将文件写入AWS的代码,还是只在芹菜函数中执行操作,将文件发送到芹菜中?芹菜也不回200好。我不明白这个问题。你必须先了解芹菜的基本知识。你会在网上找到很多教程。没那么复杂。至于你问题的最后一部分,是的,你当前的函数很可能可以像芹菜一样使用。我确实有这个想法,甚至在代码中使用了它。你能看看我最近的问题并帮我吗?没有人是。
s3.Object(BUCKET, file_full_name).put(Body=file_to_put)