У меня есть пользовательское файловое поле django, в котором используется sox, audiotool для командной строки. Это работает довольно хорошо, пока я использую сервер разработки django. Но как только я переключаюсь на рабочий сервер, используя apache2 и mod_wsgi, mod_wsgi перехватывает каждый вывод на стандартный вывод. Это делает невозможным использование инструмента командной строки для оценки файла, например, используйте его для проверки, действительно ли загруженный файл является аудиофайлом, например так:
filetype=subprocess.Popen([sox,'--i','-t','%s'%self.path], shell=False,\
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
(filetype,error)=filetype.communicate()
if error:
raise EnvironmentError((1,'AudioFile error while determining audioformat: %s'%error))
Есть ли способ обойти это?
редактировать
ошибка, которую я получаю, это «отсутствует имя файла». Я использую mod_wsgi 2.5, стандартную для Ubuntu 8.04.
edit2
Что именно происходит, когда я вызываю subprocess.Popen изнутри django в mod_wsgi? Разве подпроцесс stdin / stdout не должен быть независимым от django stdin / stdout? В этом случае mod_wsgi не должен влиять на программы, вызываемые через подпроцесс. Можно ли использовать подобный командной строке из mod_wsgi?