I am using apache(2.4.6) with mod_wsgi(4.6.5) in daemon mode. I am 
currently working on a project which needs to preload the WSGI application.

This is the configuration i was using before:
<VirtualHost *:8080> 
 DocumentRoot /path/to/repro/wwwroot 
 WSGIDaemonProcess repro processes=1 threads=1 display-name=repro 
maximum-requests=0 
 WSGIProcessGroup repro 
 WSGIScriptAlias /repro /path/to/repro.py process-group=repro 
 WSGIApplicationGroup %{GLOBAL} 
</VirtualHost> 

This is the repro.py file:
import os 
import web 
import sys 
import threading 
urls = ( '/', 'index' ) 
class index: 
      def GET(self): 
          print(threading.main_thread()) 
          print(threading.current_thread()) 
          print(threading.enumerate()) 
          return "Hello, world!" 

 application = web.application(urls, globals()).wsgifunc() 

According to the following two resources:

   - enable to initialize other python module before first request (Django 
   + mod_wsgi + apache) 
   
<https://stackoverflow.com/questions/43941192/enable-to-initialize-other-python-module-before-first-request-django-mod-wsgi>
   - 
   
https://modwsgi.readthedocs.io/en/master/configuration-directives/WSGIScriptAlias.html

I changed the configuration to this:
<VirtualHost *:8080> 
 DocumentRoot /path/to/repro/wwwroot 
 WSGIDaemonProcess repro processes=1 threads=1 display-name=repro 
maximum-requests=0 
 WSGIScriptAlias /repro /path/to/repro.py process-group=repro 
application-group=%{GLOBAL} 
 WSGIProcessGroup repro 
 WSGIApplicationGroup %{GLOBAL} 
</VirtualHost> 

i.e specified both *application-group* and *process-group* directive. This 
solved the pre-loading problem for us.

But, the difference here is that in the first case all the requests were 
being handled by the main thread but after the configuration change, the 
requests are now being handled in the non-main thread. We have a bunch of 
code that requires things to be run on the main thread and were running 
previously but after the change, it is causing them to fail.

I tried reordering WSGIApplicationGroup and WSGIProcess group directive but 
that didn't work. The only thing that worked was the removal of 
application-group from WSGIScriptAlias but that then would not preload the 
wsgi app. Could you please suggest to me what other things I could try?

Thank you for your time!

-- 
You received this message because you are subscribed to the Google Groups 
"modwsgi" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/modwsgi/eb747f16-10b2-48c3-9ce3-2da6a3ef383fn%40googlegroups.com.

Reply via email to