perry.tew at cibavision.novartis.com
perry.tew at cibavision.novartis.com
Thu Feb 12 12:04:09 EST 2004
First, sorry for posting redundant information about how to handle cookies. I hadn't received everyone's posts until after I sent mine. Second, as far as cookies go, I've used SimpleCookie. I see that Grisha recently added a Cookie class specific to mod_python. Let me ask, has any investigation been done into libapreq? I know it seems to be a mod_perl thing, but on their main page they have a blurb about python tie-ins with nothing listed below. I ask of speed issues. Using python code to parse cookies is pretty expensive. Not horrible, but when every request is parsed for cookies it becomes a significant part of processing time, especially with a lot of cookies being set and passed around. For an authentication handler, I've been able to reduce this time by slicing the cookie header for just my cookie and then passing that to the cookie load() method. It cut my time to 1/5 when I had a lot of cookies. cookie_header = req.headers_in.get('Cookie', '') start_index = string.find(cookie_header, 'Ticket') if start_index == -1: return 0, "user has no ticket cookie", 'noone' end_index = string.find(cookie_header, ';', start_index) if end_index == -1: end_index = len(cookie_header) stripped_down_cookie = cookie_header[start_index:end_index] cookie = Cookie.SimpleCookie() cookie.load(stripped_down_cookie) ticket = cookie['Ticket'].value The above code is much quicker than passing the entire header to the load() when there are many cookies. btw, if someone has some optimization tips for the above code, or a better way to do it, please let me know! At any rate, I haven't tested Grisha's new cookie class, but it's also a pure python solution. That's what got me thinking about libapreq since it's a C solution and has routines for parsing cookies. Thought I'd ask if anything has been done yet. I googled and came up blank. Anyone? Thanks, Perry Tew # I use this cookies = SimpleCookie() cookies['cookie1'] = value1 cookies['cookie2'] = value2 req.headers_out.add('Set-Cookie', cookies.output(header='', sep='\r\nSet-Cookie:')) Bud P. Bruegger wrote: > Hi David, > > I don't know much about mod-python--just planning to use it myself. > But maybe this is what you're looking for: > > http://www.modpython.org/live/mod_python-3.1.2b/doc-html/pyapi-cookie.html > > > I came across this before and had a hell of a time finding it again. > Trouble seems to be that it is in the 3.1 beta version and the home > page links to the stable manual (3.0). > > cheers > -b > > At 17.26 12/02/2004 +1300, you wrote: > >> Hi, >> >> I've been a longtime user of Cookie.SimpleCookie, as an easy way of >> getting/setting cookies within Python CGI scripts. >> >> A couple of days ago, I installed mod_python. >> >> While I'm impressed with the performance gain mod_python is giving me >> with its CGI handler, I suspect things can run faster still if I >> write my own handler. >> >> Only problem is - I can't see a trivial way to get a Cookie object >> from the 'req' object which gets passed to one's mod_python handler. >> >> So my question is - is there any code for getting a Cookie object >> from the 'req' object? >> >> It's not too hard to write one - just a bit of farting about. But I'd >> rather not 'reinvent a wheel' if someone else has already done this. >> >> But if I have to write it myself, here's another question - how do I >> get the raw http headers from 'req' as a bulk string, which I can >> pass to Cookie.load()? >> >> Thanks in advance for your help >> >> -- >> >> Kind regards >> David >> >> -- >> >> leave this line intact so your email gets through my junk mail filter >> >> _______________________________________________ >> Mod_python mailing list >> Mod_python at modpython.org >> http://mailman.modpython.org/mailman/listinfo/mod_python > > > > ------------------------------------------------------------------------------------------------- > > Ing. Bud P. Bruegger, Ph.D. bud at comune.grosseto.it > Servizio Elaborazione Dati 0564-488 577 (voice) > Comune di Grosseto 0564- 21139 (fax) > Via Ginori, 43 > 58100 Grosseto > > Collaborazione Open Source per la CIE http://www.comune.grosseto.it/cie/ > _______________________________________________ > 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
|