Graham Dumpleton
grahamd at dscpl.com.au
Fri Mar 31 03:32:45 EST 2006
Remember to keep followups on mailing list. :-) A few comments on code: On 31/03/2006, at 3:35 PM, Alberto Ruiz wrote: > I added debug code in my Python script that writes to a file at > different stages of the script. The script executes successfully > without any errors, and my debug writes show up fine in the debug > file. > In any case here is a snippet of my script: > > global DB > import sys > sys.path.append('/home/john/www/mydomain.com') You shouldn't append to sys.path explicitly in modules because every time the module is reloaded, it will be extended, thus growing and growing the path with the same directory. > import DBconnectpropman > import ZWF > reload(ZWF) Huh???? > import time,random,string > global DATEBOX > from mod_python import Cookie > > def index (req,LLRuser='',LLRpw=''): > debugfile = open("/home/john/www/mydomain.com/debug.txt", "a") > debugfile.write("Begining of index function\n") > global R; R=req; R.content_type="text/html" You should not store the request object in a global variable. If you ever move to mod_python 3.X and use a multithreaded MPM it will break as multiple threads may execute within the same module as the same time. > cur=DBconnectpropman.DB.cursor() > sidrefreshing=0 > ZWF.R=R > global SID;SID='' > global UID;UID='' > cookies = Cookie.get_cookies(R, Cookie.MarshalCookie, > secret='LLR14222222') > if LLRuser!='' and LLRpw!='': # login attempt > if string.find(LLRuser,"@")!=-1: #client login attempt > cur.execute("select clientid,name,password from client where > email='"+LLRuser+"'") > userrs=cur.fetchone() > if str(userrs)!='None': > LLRuser=userrs[1] > usertable='client' > else: > debugfile.write("It is an admin user\n") > cur.execute("select * from user where name='"+LLRuser+"' and > password='"+LLRpw+"'") > userrs=cur.fetchone() > usertable='user' > debugfile.write("admin user section.\n") > if str(userrs)!='None': #login success create session key, update > user > record, sett sid cookie > debugfile.write("userrs is not None.\n") > SID='' > for n in range(0,32): > x=random.randint(48,108) > if x>57:x+=8 > if x>90:x+=6 > SID+=chr(x) > cookie = Cookie.Cookie('sid', SID); cookie.expires = time.time() + > 36000; Cookie.add_cookie(R, cookie) > q="update "+usertable+" set SID='"+SID+"' where name='"+LLRuser+"' > and password='"+LLRpw+"'" In mod_python 2.7.X you must flush out the headers before you write any data to the response. This is why the order of your stuff is mucked up. req.send_http_header() > R.write("userq="+q) > cur.execute(q) > debugfile.write("Before calling BB.html.\n") > #R.write("<head><meta http-equiv='refresh' > content='0;url=BB.html'></head>") > debugfile.write("AFTER calling BB.html.\n") > sidrefreshing=1 > debugfile.write("END of userrs is not None.\n") > debugfile.write("Before closing debug file\n") > debugfile.close() > > > I thought that maybe the meta http-equiv was the problem so I > commented > out but I still get the error. > > > > On Fri, 2006-03-31 at 00:22 -0500, Graham Dumpleton wrote: >> Alberto Ruiz wrote .. >>> I'm getting a very wierd error when I call my python script. Other >>> Python scripts seem to work fine but one in particular returns a 500 >>> server error and the error does not show in the error-log under the >>> virtual domain that I'm working on but on the main error-log. >>> How can >>> I >>> get additional debugging information to find out the problem? >>> >>> In the error-log I get the following: >>> mod_python: (Re)importing mod_python.publisher from None >> >> In mod_python 2.7.11, this message possibly doesn't mean much. >> >>> When I run my python script I get the following: >>> >>> HTTP/1.1 500 Internal Server Error >>> Date: Fri, 31 Mar 2006 04:46:55 GMT >>> Server: Apache/1.3.33 (Unix) PHP/4.4.2 mod_python/2.7.11 Python/ >>> 2.4.2 >>> mod_perl/1.29 >>> Connection: close >>> Transfer-Encoding: chunked >>> Content-Type: text/html; charset=iso-8859-1 >>> >>> 262 >>> <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> >>> <HTML><HEAD> >>> <TITLE>500 Internal Server Error</TITLE> >>> </HEAD><BODY> >>> <H1>Internal Server Error</H1> >>> The server encountered an internal error or >>> misconfiguration and was unable to complete >>> your request.<P> >>> Please contact the server administrator, >>> root at mydomain.com and inform them of the time the error occurred, >>> and anything you might have done that may have >>> caused the error.<P> >>> More information about this error may be available >>> in the server error log.<P> >>> <HR> >>> <ADDRESS>Apache/1.3.33 Server at mydomain.com Port 80</ADDRESS> >>> </BODY></HTML> >>> >>> 0 >> >> This message in mod_python 2.7.11 with no message in error log >> generally means that your published function doesn't return anything. >> >> Can you post the most minimal publisher function which shows the >> problem? >> >> Graham >>
|