我正在构建一个web应用程序,它将处理(pad,mix,merge等)声音文件,我发现sox做的正是我想要的。Sox是一个linux命令行程序,让python web应用每次请求都在我的服务器上启动新的sox进程,这让我感到有点不舒服。
示例:
import os
os.system('sox input.wav -b 24 output.aiff rate -v -L -b 90 48k')
对我来说,这整个设置似乎有点不稳定。
所以我的问题是,在python (或任何脚本语言) web应用程序中运行命令行程序的最佳实践是什么?
为了绕过整个请求响应周期,消息队列是需要实现的一件事。但是,有没有其他方法可以让这些东西更优雅呢?
发布于 2009-01-16 12:48:08
subprocess
模块是从Python中运行其他程序的首选方式--比os.system
更灵活、更易于使用。
import subprocess
#subprocess.check_output(['ls', '-l']) # All that is technically needed...
print(subprocess.check_output(['ls', '-l']))
发布于 2009-01-16 18:11:19
如果您关心服务器性能,那么可以考虑设置正在运行的sox进程的数量上限。如果命中上限,您可以随时缓存请求,并在请求完成时以任何适合您的应用程序的方式通知用户。
或者,将n个工作脚本放在其他机器上,这些机器从db提取请求并调用sox,然后将生成的输出文件推送到需要的位置。
发布于 2009-01-16 12:36:33
我不熟悉sox,但是否可以将其设置为服务并连接到请求,而不是像命令行一样反复调用该程序?您可以查看连接接口,如sqlite,以获得灵感。
https://stackoverflow.com/questions/450285
复制相似问题