首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从python中执行命令行程序

从python中执行命令行程序
EN

Stack Overflow用户
提问于 2009-01-16 12:30:44
回答 3查看 517.5K关注 0票数 330

我正在构建一个web应用程序,它将处理(pad,mix,merge等)声音文件,我发现sox做的正是我想要的。Sox是一个linux命令行程序,让python web应用每次请求都在我的服务器上启动新的sox进程,这让我感到有点不舒服。

示例:

代码语言:javascript
复制
import os
os.system('sox input.wav -b 24 output.aiff rate -v -L -b 90 48k')

对我来说,这整个设置似乎有点不稳定。

所以我的问题是,在python (或任何脚本语言) web应用程序中运行命令行程序的最佳实践是什么?

为了绕过整个请求响应周期,消息队列是需要实现的一件事。但是,有没有其他方法可以让这些东西更优雅呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-01-16 12:48:08

subprocess模块是从Python中运行其他程序的首选方式--比os.system更灵活、更易于使用。

代码语言:javascript
复制
import subprocess
#subprocess.check_output(['ls', '-l'])  # All that is technically needed...
print(subprocess.check_output(['ls', '-l']))
票数 315
EN

Stack Overflow用户

发布于 2009-01-16 18:11:19

如果您关心服务器性能,那么可以考虑设置正在运行的sox进程的数量上限。如果命中上限,您可以随时缓存请求,并在请求完成时以任何适合您的应用程序的方式通知用户。

或者,将n个工作脚本放在其他机器上,这些机器从db提取请求并调用sox,然后将生成的输出文件推送到需要的位置。

票数 3
EN

Stack Overflow用户

发布于 2009-01-16 12:36:33

我不熟悉sox,但是否可以将其设置为服务并连接到请求,而不是像命令行一样反复调用该程序?您可以查看连接接口,如sqlite,以获得灵感。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/450285

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档