开发者

How can i use a commandlinetool (ie. sox) via subprocess.Popen with mod_wsgi?

I have a custom django filefield that makes use of sox, a commandline audiotool. This works pretty well as long as i use the django development server. But as soon as i switch to the production server, using apache2 and mod_wsgi, mod_wsgi catches every output to stdout. This makes it impossible to use the commandline tool to evaluate the file, for example use it to check if the uploaded file really is an audio file like this:

filetype=subprocess.Popen([sox,'--i','-t','%s'%self.path], shell=False,\
                          stdout=subprocess.PIP开发者_开发问答E, stderr=subprocess.PIPE)
(filetype,error)=filetype.communicate()
if error:
    raise EnvironmentError((1,'AudioFile error while determining audioformat: %s'%error))  

Is there a way to workaround for this?

edit

the error i get is "missing filename". I am using mod_wsgi 2.5, standard with ubuntu 8.04.

edit2

What exactly happens, when i call subprocess.Popen from within django in mod_wsgi? Shouldn't subprocess stdin/stdout be independent from django stdin/stdout? In that case mod_wsgi should not affect programms called via subprocess. Is it possible to use a commandlinetool like that from mod_wsgi?


Add debug to your program to log to stderr the value of 'self.path' to ensure it is actually set to something. The message 'missing filename' suggest it may be empty. Also be aware that when running on Apache/mod_wsgi you must use absolute path names to files because the current working directory will not be the project directory like with the Django development server. Finally, Apache runs as a special user, so it needs to have appropriate read and/or write access to the directories you need it to access/write to. The path and access issues are documented in:

http://code.google.com/p/modwsgi/wiki/ApplicationIssues

BTW, for stdout issues, you really should upgrade to mod_wsgi 3.3. Read:

http://blog.dscpl.com.au/2009/04/wsgi-and-printing-to-standard-output.html

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜