[mod_python] Good idea to use apache.setup_cgi() with multithreaded model?

Huzaifa Tapal huzaifa at hostway.com
Mon Feb 21 15:48:45 EST 2005


I have a custom handler that i have built that calls instantiates a web 
application framework I have written and asks it process the request.  
Since this web app framework originally was designed for CGI and was 
used in CGI, I am calling the apache.setup_cgi() to make the env 
seamless for the framework.  I am running this under a multithreaded mpm 
apache configuration and am running into problems with race conditions 
with multiple threads accessing shared resources in memory.

Since my customer handler kind of resembles the provided cgihandler 
which is not suited for a multithreaded env, I am wondering I am right 
in doing the apache.setup_cgi() like I am.  My handler code looks like 
as follows:

    def handler(req):
       
        #_lock.acquire()
        #try:  
        # setup the cgi environment
        env, si, so = apache.setup_cgi(req)
       
        # write the content type for testing purposes
        #sys.stdout.write("content-type: text/html\r\n\r\n")
       
        cache = req.get_options().get("CACHE", "Off")
        if cache == "Off":
            cache = 0

        try:   
            # load the driver
            driver = GlobalCache.getCachedItem("Driver")
            if not driver:
                driver = Driver(["./Driver.py"], cache_projects=cache,
    modpy_req=req)

                # cache if we have caching objects turned
                if cache:
                    GlobalCache.setCachedItem("Driver",driver)
           
            # process the request
            driver.process()
        except:
            pass   

        apache.restore_nocgi(env, si, so)
        return apache.OK
        #finally:
        #    _lock.release()


Any help would be appreciated. 

Hozi
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mm_cfg_has_not_been_edited_to_set_host_domains/pipermail/mod_python/attachments/20050221/62715ae0/attachment.html


More information about the Mod_python mailing list