0

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

s3.Object(BUCKET, file_full_name).put(Body=file_to_put)

问题从那里开始。在这里,我正在将文件写入云端。并且因为编写它需要很长时间,该站点继续尝试加载文件并且永远不会这样做。file_to_put是字节类型。我该如何解决它,以便我可以将更大的文件上传到云端?

注意我需要阅读文件,但首先我需要解决这个问题

后端框架 - 烧瓶

4

1 回答 1

1

这就是worker进程类型和任务队列的用武之地(因此您可以将 Celery+Redis 与 Flask 或类似的东西一起使用)。

基本上,您将在任务队列(例如 Redis)中写入文件的任务排队,您的web进程会立即向网站访问者返回 200 OK。与此同时,您的worker进程从队列中选择任务并开始执行耗时任务(将文件写入 S3)。

在前端,您必须要求访问者“过一段时间再回来”或显示等待“微调器”或向访问者指示文件尚不可用的东西。文件写入后,您可以发送刷新页面的信号,或者您可以在网页上使用 JavaScript 每秒检查文件是否准备就绪,或者只是让访问者在说一分钟后刷新页面.

我知道这一切听起来可能很复杂,但这就是它的完成方式。您的web进程不应等待长时间运行的任务。

于 2020-05-15T01:39:56.700 回答