想实现网站中上传音频文件,上传到服务器后,用 python 处理这个音频,这个 python 程序要怎么部署呢?后端用 node 处理,如何告诉 python 要执行了呢?
1
alexsz 2023-09-05 08:15:11 +08:00
服务器正常安装 python 、创建 python 虚拟环境,安装程序依赖
后端 node 保存好前端上传的文件后,可以调用 node 的 child_process 来执行 python 命令 |
2
Bronya 2023-09-05 08:34:56 +08:00
试试 pm2 ?虽然是给 node 的进程管理工具,但是 python 好像也支持。
|
3
flowerains 2023-09-05 08:44:21 +08:00
pm2 还能管理 python 进程?
感觉又涨知识了 |
4
Donahue 2023-09-05 08:48:09 +08:00
docker 部署, http 请求告诉 python 需要处理的文件在哪里
|
5
tgcdz 2023-09-05 08:50:12 +08:00
@flowerains 不仅仅是 node ,只要是命令行程序都行,我就在用 pm2 管理 go 服务、C++文件服务器这些,贼好用
|
6
hanyu2pomelo 2023-09-05 09:02:48 +08:00
写个接口 http 调一下
|
7
leconio 2023-09-05 09:13:52 +08:00 via iPhone
为何不考虑弄个云函数,上穿到 oss 后给云函数个回调。只需关注代码即可
|
8
weidaizi 2023-09-05 09:17:29 +08:00
两种方法
1. pyinstaller 打包成可执行文件,然后部署 2. docker 打成镜像,要用的时候拉起来 |
9
paopjian 2023-09-05 09:18:58 +08:00
python 开个 fastapi/flask/Django 服务,用 supervisord 保护服务进程
node 获取音频后发送给 python 请求进行执行 |
10
zhangxh1023 2023-09-05 09:19:53 +08:00
python 写个 web 服务。。。node 通过 http 调用。。。。
|
11
xiyou007 2023-09-05 09:24:41 +08:00 1
最简单的 python 自动轮训查看指定文件夹的文件, 有处理,没有就 sleep
|
12
shawnbluce 2023-09-05 09:28:23 +08:00
1. 将 Python 维持脚本状态,每次用 node 走命令行调用
2. 将 Python 做成 web 服务仅监听 127.0.0.1 ,每次发起一个请求告知 Python 去处理哪个 |
13
liuxingdeyu 2023-09-05 10:11:10 +08:00
多简单,整个死循环,等队列或者读文件夹,放个容器里跑着呗
|
14
itskingname 2023-09-05 10:15:27 +08:00
使用消息队列。
1. Python 一直运行监控消息队列。 2. 后端收到文件以后,放到一个文件夹下面,获得文件路径 3. 把其他元信息(例如上传时间、文件名、处理参数等等),加上文件路径,转成 JSON ,发送到消息队列 4. Python 处理完成以后,调用后端某个接口,告诉后端已经处理完成了。 5. 返回数据给用户。 |
15
lipcao 2023-09-05 10:32:10 +08:00
@itskingname 多个模块 入口是 kafka 消费者 请问这种咋部署啊?
|
16
Waverly 2023-09-05 11:02:56 +08:00
之前用过 fastapi 直接向服务器发送请求,返回 json ,但是对于负载多的场景要另做优化了
|
17
iku 2023-09-05 13:15:11 +08:00
chatgpt 答案很全呀
要实现网站中上传音频文件并在服务器上使用 Python 处理该音频,你可以按照以下步骤进行部署: 1. 配置服务器环境:首先,确保服务器上已经安装了 Python 运行环境和所需的音频处理库或工具。你可以使用包管理工具如 pip 来安装所需的 Python 库。 2. 编写音频处理程序:使用 Python 编写处理音频的程序。这个程序可以使用 Python 的音频处理库(如 librosa 、pydub 等)来读取、分析和处理音频文件。确保你的程序可以接受音频文件作为输入,并进行相应的处理操作。 3. 创建后端接口:在 Node.js 的后端代码中,你可以使用框架如 Express 来创建一个接受音频文件上传请求的路由。当用户上传音频文件时,后端会将音频文件保存到服务器的指定目录中。 4. 调用 Python 程序:在 Node.js 后端的路由处理函数中,可以使用 Child Process 模块来调用 Python 程序。Child Process 模块允许你在 Node.js 中执行外部命令,包括执行 Python 脚本。你可以使用 `child_process.spawn()` 或 `child_process.exec()` 方法来调用 Python 程序,并将上传的音频文件作为参数传递给 Python 程序。 5. 处理结果返回给前端:在 Python 程序完成音频处理后,可以将处理结果保存到服务器上的指定位置,并将结果的路径或其他相关信息返回给 Node.js 后端。后端可以将这些信息组织成 JSON 格式的数据,并通过响应返回给前端。 通过以上步骤,你可以实现在网站中上传音频文件,并通过 Node.js 后端调用 Python 程序进行处理。请注意确保服务器上的安全性和权限设置,以及对上传的音频文件进行合适的验证和处理,以防止安全漏洞和潜在的问题。 除了使用 Node.js 后端调用 Python 程序处理音频文件之外,还有其他一些解决方案,具体取决于你的需求和技术栈。以下是一些备选方案: 直接使用 Python 后端:如果你的后端已经是使用 Python 编写的,你可以直接在 Python 后端处理音频文件,而无需引入 Node.js 。在 Python 后端中,你可以使用框架如 Flask 或 Django 来处理上传文件的请求,并使用相应的音频处理库进行处理。 使用消息队列:你可以使用消息队列(如 RabbitMQ 、Apache Kafka 等)来处理上传的音频文件。当用户上传音频文件时,将文件信息发送到消息队列中,并有一个独立的 Python 消费者程序监听队列,负责处理音频文件。这种方式可以实现解耦和异步处理,提高系统的可伸缩性和并发性。 使用云服务:考虑使用云服务提供商的相关服务来处理音频文件。例如,你可以使用云存储服务(如 AWS S3 、Google Cloud Storage 等)来存储上传的音频文件,并使用云函数(如 AWS Lambda 、Google Cloud Functions 等)来触发和执行 Python 函数进行音频处理。 这些方案都有各自的优势和适用场景。你可以根据项目需求、团队技术栈和资源预算来选择适合的方案。无论选择哪种方案,都需要注意文件上传的安全性和合法性验证,以及对处理过程中的异常情况进行适当处理和错误处理。 |
18
superchijinpeng 2023-09-05 13:21:30 +08:00
docker
|
19
julyclyde 2023-09-06 11:53:20 +08:00
@Bronya
@flowerains @tgcdz @paopjian @shawnbluce 建议不要用 pm2/supervisord 之类的,因为虽然它能提供管理进程和故障重启的能力,但其对自身的存活却缺乏保障能力 建议用容器或者 systemd |
20
cooolr 2023-09-06 14:17:00 +08:00
感觉 python 的项目工程化极差。
|