perry.tew at cibavision.novartis.com
perry.tew at cibavision.novartis.com
Thu Oct 2 16:09:00 EST 2003
Grisha, Thanks for the tip! I'll try that tonight. About the infinite recursion issue ... yeah, I struggled with that a lot. The perl code I had did the following: return OK unless $r->is_main; to prevent this loop. I had something in my handler like this: if req.prev: return apache.OK but I took it out and the handler didn't seem to hang. Quite strange. It's obvious I have some more learning to do. I'll continue experimenting. If I may ask you a different question along the lines of authentication. I have need to cache roles and acls for urls in order to prevent hitting a database for every request. I need a way to cache these values and have each of my child processes access them. 1. I'm using the "worker" MPM. Is that acceptable for use with mod_python? I haven't had a problem yet with it. 2. Is there a preferred way of sharing data among the different children? dbm? berkley db? IPC? I don't mind file based persistance, but I'm ignorant of the fastest and safest way to cache this data. Any thoughts would be appreciated. Something else I thought of was that I guess I could jack up the number of threads per child and limit the number of children to something small. Would that not keep the number of caches down to 3 or 4 ( 1 per child )? I'm really enjoying mod_python. Thanks for writing it. Perry Tew On Wed, 1 Oct 2003 perry.tew at cibavision.novartis.com wrote: > So, my perl code looks like this: > ########################################## > my $subr = $r->lookup_uri($r->uri); > my $env = $subr->subprocess_env; > my $cn = $env->{'SSL_CLIENT_S_DN_CN'}; > my $dn = $env->{'SSL_CLIENT_S_DN'}; > ########################################## It looks like mod_perl's lookup_uri returns the new request object, which is rather clever, we should adopt this in mod_python :-) > I'm trying to do the same thing in python with this: > ############################################ > req.internal_redirect(req.unparsed_uri) > req.add_common_vars() > for k, v in req.subprocess_env.items(): > msg = k + "=" + v > apache.log_error( msg , apache.APLOG_NOTICE ) > > ############################################ Try this instead: req.internal_redirect(req.unparsed_uri) req.next.add_common_vars() for k, v in req.next.subprocess_env.items(): msg = k + "=" + v apache.log_error( msg , apache.APLOG_NOTICE ) Notice "req.next" instead of "req" Also - don't know if your handler does this elsewhere, but I think that req.internal_redirect(req.unparsed_uri) would create an infinite recursion unless you check that you are not in a subrequest by examining req.prev. Grisha
|