V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
moguizhong
V2EX  ›  问与答

Python 程序如何部署啊?

  •  
  •   moguizhong · 235 天前 · 2534 次点击
    这是一个创建于 235 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

    建议用容器或者 systemd
    cooolr
        20
    cooolr  
       233 天前
    感觉 python 的项目工程化极差。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2826 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 06:12 · PVG 14:12 · LAX 23:12 · JFK 02:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.