Python 程序如何部署啊?

246 天前
 moguizhong

想实现网站中上传音频文件,上传到服务器后,用 python 处理这个音频,这个 python 程序要怎么部署呢?后端用 node 处理,如何告诉 python 要执行了呢?

2551 次点击
所在节点    问与答
20 条回复
alexsz
246 天前
服务器正常安装 python 、创建 python 虚拟环境,安装程序依赖
后端 node 保存好前端上传的文件后,可以调用 node 的 child_process 来执行 python 命令
Bronya
246 天前
试试 pm2 ?虽然是给 node 的进程管理工具,但是 python 好像也支持。
flowerains
246 天前
pm2 还能管理 python 进程?
感觉又涨知识了
Donahue
246 天前
docker 部署, http 请求告诉 python 需要处理的文件在哪里
tgcdz
246 天前
@flowerains 不仅仅是 node ,只要是命令行程序都行,我就在用 pm2 管理 go 服务、C++文件服务器这些,贼好用
hanyu2pomelo
246 天前
写个接口 http 调一下
leconio
246 天前
为何不考虑弄个云函数,上穿到 oss 后给云函数个回调。只需关注代码即可
weidaizi
246 天前
两种方法
1. pyinstaller 打包成可执行文件,然后部署
2. docker 打成镜像,要用的时候拉起来
paopjian
246 天前
python 开个 fastapi/flask/Django 服务,用 supervisord 保护服务进程
node 获取音频后发送给 python 请求进行执行
zhangxh1023
246 天前
python 写个 web 服务。。。node 通过 http 调用。。。。
xiyou007
246 天前
最简单的 python 自动轮训查看指定文件夹的文件, 有处理,没有就 sleep
shawnbluce
246 天前
1. 将 Python 维持脚本状态,每次用 node 走命令行调用
2. 将 Python 做成 web 服务仅监听 127.0.0.1 ,每次发起一个请求告知 Python 去处理哪个
liuxingdeyu
246 天前
多简单,整个死循环,等队列或者读文件夹,放个容器里跑着呗
itskingname
246 天前
使用消息队列。

1. Python 一直运行监控消息队列。
2. 后端收到文件以后,放到一个文件夹下面,获得文件路径
3. 把其他元信息(例如上传时间、文件名、处理参数等等),加上文件路径,转成 JSON ,发送到消息队列
4. Python 处理完成以后,调用后端某个接口,告诉后端已经处理完成了。
5. 返回数据给用户。
lipcao
246 天前
@itskingname 多个模块 入口是 kafka 消费者 请问这种咋部署啊?
Waverly
246 天前
之前用过 fastapi 直接向服务器发送请求,返回 json ,但是对于负载多的场景要另做优化了
iku
245 天前
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 函数进行音频处理。

这些方案都有各自的优势和适用场景。你可以根据项目需求、团队技术栈和资源预算来选择适合的方案。无论选择哪种方案,都需要注意文件上传的安全性和合法性验证,以及对处理过程中的异常情况进行适当处理和错误处理。
superchijinpeng
245 天前
docker
julyclyde
244 天前
@Bronya
@flowerains
@tgcdz
@paopjian
@shawnbluce

建议不要用 pm2/supervisord 之类的,因为虽然它能提供管理进程和故障重启的能力,但其对自身的存活却缺乏保障能力

建议用容器或者 systemd
cooolr
244 天前
感觉 python 的项目工程化极差。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/970932

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX