gpt4 book ai didi

python - 并发文件上传/下载和运行后台进程

转载 作者:太空宇宙 更新时间:2023-11-03 14:04:11 25 4
gpt4 key购买 nike

我想创建一个最小的网页,并发用户可以在其中上传文件,我可以处理该文件(预计需要几个小时)并稍后通过电子邮件返回给用户。

由于我在 AWS 上托管此文件,因此我想在收到文件后调用一些后台进程,这样即使用户关闭浏览器窗口,处理也会继续进行,并且我能够在几分钟后发送结果小时,全部通过一些预先编写的脚本。

您能帮我解决后勤问题吗?我应该如何做?

最佳答案

它可能是这样的(与托管无关):

  1. 用户在网络服务器上上传文件
  2. 文件保存在存储中,稍后可由后台作业访问
  3. 有关文件的一些元数据(存储位置、用户电子邮件等)保存在数据库/消息代理
  4. 跟踪数据库/消息代理的后台作业获取元数据并开始处理文件(这就是为什么需要在第 2 页中对其进行访问)并通知用户

更具体地说,如果使用 python/django + aws,您可以使用以下堆栈:

  1. 假设您使用的是 python + django
  2. 您可以将上传的文件保存在私有(private) AWS S3 存储桶
  3. 某些元数据可能会保存在db中,或者直接使用celery + AWS SQSAWS SQS,或者调出类似的内容rabbitmqredis(+pubsub)
  4. 让 python 代码处理这项工作 - 取决于您在 p.3 中选择的内容。唯一的要求是它可以从您的 S3 存储桶中提取数据。作业完成后通过 AWS SES 通知用户

最简单的单服务器设置,不需要任何中间组件:

  1. 您的 Python 脚本,只需将文件保存在文件夹中并为其命名,例如 someuser@yahoo.com-f9619ff-8b86-d011-b42d-00cf4fc964ff
  2. Cron 作业在此文件夹中查找任何文件,处理找到的文件并通知用户。请注意,如果您需要并行运行多个后台作业,则需要稍微复杂化方案以避免竞争条件(即重命名正在处理的文件,以便只有一个作业可以处理它)

在产品应用程序中,根据您的需求,您可能需要介于两者之间的东西

关于python - 并发文件上传/下载和运行后台进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49027447/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com