[mod_python] Form upload

Graham Dumpleton grahamd at dscpl.com.au
Fri May 19 06:58:58 EDT 2006


On 19/05/2006, at 8:13 PM, Terry Macdonald wrote:

>
> "sys.stdout=sys.stderr=req"
>
> This may be a dumb question but I'm not getting it...
> What does the above line do?
> Why does one want to set standard error and standard out to the  
> request object?
> What does printing to the request object do?
> ...and how does it work?
>
> I'm missing something fundamentally object oriented here, aren't I?
>
> I just see objects that are used to print stuff and then a request  
> object which contains request information. I'm not getting the link.

Both sys.stderr and sys.stdout are file objects. The primary method  
for writing
data is the "write()" member function. It is the "write()" member  
function that "print"
calls on the sys.stdout file object.

Outside of mod_python, you could replace sys.stdout with some other  
file object,
for example an open log file, and every use of "print" in the program  
would see that
output go to the log file instead.

In practice, sys.stdout doesn't actually have to be a file object,  
just a file like
object which provides a "write()" method. As a "req" object provides  
a "write()"
function, it could technically thus be used as a substitute for  
sys.stdout. As I
pointed out in prior email though, this would actually be a dangerous  
thing
to do in mod_python where a multithreaded MPM is being used.

Hope this makes sense.

Graham


More information about the Mod_python mailing list