Python 的音频处理服务器工作流程

Audio Processing Server Workflow with Python

我通常驻留在堆栈的前端,但我需要在服务器上进行一些音频处理工作并下载结果。

我希望用户能够将 MP3 文件上传到服务器并让它使用 Python 脚本处理该文件并允许用户下载结果。该过程可能需要 10-20 分钟,因此我需要在过程完成后通知用户。

我已经知道如何将 MP3 文件上传到服务器了,但是我已经搞定了。我不确定如何启动 Python 脚本,将结果存储在网络服务器上,然后提供临时下载。

有人可以大笔地向我解释一下我应该怎么做吗?我不指望任何人为我做这项工作,但我正在寻找可以开始阅读有关如何做这件事的建议。

这可以用于无服务器函数吗?

谢谢!

这是 "background" 或异步任务的经典示例。从用户的角度(人们真的不想坐等 20 分钟)和 Web 服务器(不应该挂在这个请求上)。

推荐的处理方式是某种task/job队列系统。

上传文件后,Web 服务器创建任务并将其提交到队列。然后它 returns "job accepted",并完成请求。 然后该任务被异步处理,最好由后端工作进程处理。 当工作人员完成时,作业结果存储在数据库中。 worker 也可以构造一个 URL 来查看这个结果。 然后可以将此 URL 发送给用户(比如通过电子邮件),以访问结果。 Web 前端应从此 URL 根据存储在数据库中的结果呈现页面。

Python 的一个很好的开源和独立于供应商的任务队列堆栈是 Celery。对于小型应用程序,您可以使用 Redis 作为消息代理和结果后端。对于较大的应用程序,我建议使用 RabbitMQ 作为消息后端,并使用 Postgres/MySQL 作为结果。

这篇two-part blog series很好地介绍了主题。