Graham Dumpleton
grahamd at dscpl.com.au
Fri Mar 31 16:57:21 EST 2006
On 31/03/2006, at 11:36 PM, Alberto Ruiz wrote: > I had to append the path because I was getting the error that import > DBconnectpropman could not be found. Somehow the path gets lost. I > also try adding the following to the httpd.conf: > > PythonPath "sys.path+['/home/brianheadrentals/www/ > brianheadrentals.com>' > ]" > > But it didn't make a difference. They are about 10 python scripts > for > the whole site and for each one if I don't do the sys.path.append it > fails to find it. Is there another way to fix it? You might be able to use apache.import_module(). DBconnectpropman = apache.import_module("DBconnectpropman", path=['/home/brianheadrentals/www/brianheadrentals.com']) instead of: import DBconnectpropman That way you can explicitly say where the module lives. > In regards to flushing out the headers. You mean that before doing: > > R.write("<head><meta http-equiv='refresh' > content='0;url=BB.html'></head>") > > I should do: > > R.send_http_header() > > right? > > On Fri, 2006-03-31 at 07:18 -0500, Jim Gallacher wrote: >> Graham Dumpleton wrote: >>> 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 >>>>> >>> >>> _______________________________________________ >>> Mod_python mailing list >>> Mod_python at modpython.org >>> http://mailman.modpython.org/mailman/listinfo/mod_python >>> >> >> > > _______________________________________________ > Mod_python mailing list > Mod_python at modpython.org > http://mailman.modpython.org/mailman/listinfo/mod_python
|