Understood.

Thankyou
RajKumar

On Monday 5 August 2024 at 09:39:47 UTC+5:30 Graham Dumpleton wrote:

> Memory will still be claimed by the process.
>
> I already told you to use:
>
>      inactivity-timeout=30
>
> on WSGIDaemonProcess to have the daemon processes restart after non 
> activity for a while so memory will return to base amount for Python 
> interpreter.
>
> Graham
>
> On 5 Aug 2024, at 2:06 PM, RajKumar Ambadipelli <arkki...@gmail.com> 
> wrote:
>
> After processing request with a wsgi daemon what happens to cpu and memory 
> footprints that is the cpu spike's that got during processing request will 
> be gone after processing request but what about the memory footprint 
> (ram usage) does it will remain in the cache even after completing 
> requests if so how to gracefully remove it without disturbing the ongoing 
> request is it even possible.
>
> RajKumar
> On Thursday 1 August 2024 at 12:35:09 UTC+5:30 Graham Dumpleton wrote:
>
>> The number of process/threads defined in WSGIDaemonProcess is completely 
>> independent of MPM settings and which MPM module (prefork/event/worker) is 
>> being used.
>>
>> Yes having 15 threads means 15 requests can be handled concurrently, but 
>> do not be deceived in thinking that is the maximum throughput in requests 
>> per second you can handle and that you need to set it higher. In fact I 
>> actually recommend people drop it down to 5 threads per process, as 3-5 
>> threads process is a bit of a sweet spot for getting best performance for 
>> one process.
>>
>> For more background I suggest you watch the following conference talks.
>>
>> [image: maxresdefault.jpg]
>>
>> Secrets of a WSGI master. <https://www.youtube.com/watch?v=H6Q3l11fjU0>
>> youtube.com <https://www.youtube.com/watch?v=H6Q3l11fjU0>
>> <https://www.youtube.com/watch?v=H6Q3l11fjU0>
>>
>> [image: maxresdefault.jpg]
>>
>> Using benchmarks to understand how WSGI servers work. by Graham Dumpleton 
>> <https://www.youtube.com/watch?v=SGleKfigMsk>
>> youtube.com <https://www.youtube.com/watch?v=SGleKfigMsk>
>> <https://www.youtube.com/watch?v=SGleKfigMsk>
>>
>> [image: hqdefault.jpg]
>>
>> Making Apache suck less for hosting Python web applications. 
>> <https://www.youtube.com/watch?v=k6Erh7oHvns>
>> youtube.com <https://www.youtube.com/watch?v=k6Erh7oHvns>
>> <https://www.youtube.com/watch?v=k6Erh7oHvns>
>>
>> As explained in the videos, even if all request threads in a daemon 
>> process are occupied, then requests will queue up within the context of the 
>> Apache worker process which proxy to the mod_wsgi daemon processes. The MPM 
>> settings control those worker processes, and is typical for those to have 
>> higher capacity for concurrent requests, thus allowing queueing up of 
>> requests. There can also be a backlog of requests connecting to Apache as 
>> well. These topics are described in the videos.
>>
>> Graham
>>
>> On 1 Aug 2024, at 4:56 PM, RajKumar Ambadipelli <arkki...@gmail.com> 
>> wrote:
>>
>> If we don't mention options like no.of process and no.of threads in 
>> WSGIDaemonProcess directive by default it will consider 1 process with 15 
>> threads in mpm settings as event prefork right.
>> Does the above configuration helps in serving 15 request concurrently. If 
>> so, then what happens when there are more no.of concurrent requests hit our 
>> web application.
>> Does 15 threads means it serves 15 requests concurrently.
>>
>> RajKumar
>>
>> On Wednesday 31 July 2024 at 12:47:09 UTC+5:30 RajKumar Ambadipelli wrote:
>>
>>> Thankyou for clarifying.
>>>
>>> RajKumar
>>>
>>> On Wednesday 31 July 2024 at 11:56:48 UTC+5:30 Graham Dumpleton wrote:
>>>
>>>> If you define a daemon process group, the number of processes defined 
>>>> for the group will always be started and running.
>>>>
>>>> With the way you have configured things your Python web application 
>>>> code is only loaded lazily by a process in a daemon process group when the 
>>>> first request arrives which is to be handled by that process.
>>>>
>>>> Thus, prior to any request being received, the memory footprint of the 
>>>> processes should be similar to that of running an empty Python interpreter.
>>>>
>>>> If your web applications are infrequently accessed and you want to 
>>>> minimise memory usage, then add to WSGIDaemonProcess the option:
>>>>
>>>>     inactivity-timeout=30
>>>>
>>>> See 
>>>> https://modwsgi.readthedocs.io/en/master/configuration-directives/WSGIDaemonProcess.html
>>>>  for 
>>>> details, but basically what it means is that the process will be restarted 
>>>> when idle and will revert memory usage by the process back to the base 
>>>> level.
>>>>
>>>> Do note however that if you Python web application takes a long time to 
>>>> load, then this may be noticeable to users if the Python web application 
>>>> code is going to have to be reloaded frequently.
>>>>
>>>> As to CPU usage, the process if not handling requests will be waiting 
>>>> on the socket on which requests are listening, so it should not be using 
>>>> any CPU at that time.
>>>>
>>>> There are other options to WSGIDaemonProcess you could play with to 
>>>> recycle the process periodically, but what might be appropriate really 
>>>> depends on your specific web application so I can't give concrete 
>>>> suggestions of what to use.
>>>>
>>>> Graham
>>>>
>>>> On 31 Jul 2024, at 2:55 PM, RajKumar Ambadipelli <arkki...@gmail.com> 
>>>> wrote:
>>>>
>>>> What exactly I want is I want to know WSGIDaemonProcess which are ideal 
>>>> not receiving any requests and not serving response but only declared, How 
>>>> does this WSGIDaemonProcess effect my resources like memory and cpu.
>>>>
>>>> On Wednesday 31 July 2024 at 10:22:23 UTC+5:30 RajKumar Ambadipelli 
>>>> wrote:
>>>>
>>>>> Creating multiple virtualhost with different mod_wsgi daemons I meant 
>>>>> 'WSGIDaemonProcess'
>>>>> and not using it that is it will not server and requests but only 
>>>>> declared does this effect my resources like memory and CPU.
>>>>> On Monday 29 July 2024 at 12:45:21 UTC+5:30 Graham Dumpleton wrote:
>>>>>
>>>>>> Comes down to how much memory and CPU your machine has, plus how much 
>>>>>> traffic the sites get. So will depend and you will just have to see how 
>>>>>> it 
>>>>>> goes.
>>>>>>
>>>>>> On 29 Jul 2024, at 5:12 PM, RajKumar Ambadipelli <arkki...@gmail.com> 
>>>>>> wrote:
>>>>>>
>>>>>> Yeah it is working fine what I did was
>>>>>>
>>>>>> step1. Unlinked existing symlink
>>>>>> Step2. Create new symlink
>>>>>> Step3. Managed permissions and shell context of files
>>>>>>
>>>>>> Therefore no 
>>>>>> reload or restart is needed.
>>>>>>
>>>>>> But I have doubt up to how many mod_wsgi daemons we can efficiently 
>>>>>> without any disturbance and up to what extent we can trust this 
>>>>>> deployment 
>>>>>> process using mod_wsgi in daemon mode for production environment.
>>>>>>
>>>>>> Thankyou,
>>>>>> RajKumar
>>>>>> On Thursday 25 July 2024 at 13:04:18 UTC+5:30 RajKumar Ambadipelli 
>>>>>> wrote:
>>>>>>
>>>>>>> Sorry that uoadmin is actually admin.
>>>>>>>
>>>>>>> Ok I will try this one.
>>>>>>>
>>>>>>> Thankyou,
>>>>>>> RajKumar
>>>>>>>
>>>>>>> On Thursday 25 July 2024 at 12:59:13 UTC+5:30 Graham Dumpleton wrote:
>>>>>>>
>>>>>>>> You have two different directories which may complicate it a 
>>>>>>>> little, but what you can do is have something like:
>>>>>>>>
>>>>>>>>  Listen 9002 <VirtualHost *:9002> 
>>>>>>>>  ServerName test.myapp.com 
>>>>>>>>  ErrorLog /var/log/webservice_error.log 
>>>>>>>>  WSGIPassAuthorization On 
>>>>>>>>  WSGIDaemonProcess Tes9002 
>>>>>>>> python-path=/home/uoadmin/releases/test/students:/home/admin/releases/test/shared
>>>>>>>>  
>>>>>>>> display-name=%{GROUP} 
>>>>>>>>  WSGIProcessGroup Tes9002 WSGIApplicationGroup %{GLOBAL} 
>>>>>>>>  WSGIScriptAlias / /home/admin/releases/test/students/conf/wsgi.py 
>>>>>>>>  <Directory /home/admin/releases/test/students/conf>
>>>>>>>>  <Files wsgi.py> Require all granted </Files>
>>>>>>>>  </Directory> 
>>>>>>>> </VirtualHost>
>>>>>>>>
>>>>>>>>  <VirtualHost *:9002> 
>>>>>>>>  ServerName dev.myapp.com 
>>>>>>>>  ErrorLog /var/log/webservice_error.log 
>>>>>>>>  WSGIPassAuthorization On 
>>>>>>>>  WSGIDaemonProcess Dev9002 
>>>>>>>> python-path=/home/uoadmin/releases/dev/students:/home/admin/releases/dev/shared
>>>>>>>>  
>>>>>>>> display-name=%{GROUP} 
>>>>>>>>  WSGIProcessGroup Dev9002 WSGIApplicationGroup %{GLOBAL} 
>>>>>>>>  WSGIScriptAlias / /home/admin/releases/dev/students/conf/wsgi.py 
>>>>>>>>  <Directory /home/admin/releases/dev/students/conf>
>>>>>>>>  <Files wsgi.py> Require all granted </Files> 
>>>>>>>>  </Directory> 
>>>>>>>> </VirtualHost>
>>>>>>>>
>>>>>>>> In this case /home/admin/releases/dev would actually be a symlink 
>>>>>>>> to the versioned directory. 
>>>>>>>>
>>>>>>>> Not sure why have separate uoadmin directory, but also have 
>>>>>>>> /home/uoadmin/releases/dev as symlink to the versioned directory.
>>>>>>>>
>>>>>>>> To change what is used, remove/recreate symlinks so point to the 
>>>>>>>> directory for the new version.
>>>>>>>>
>>>>>>>> That the wsgi.py has changed should trigger a process restart if 
>>>>>>>> auto reloading is on (default).
>>>>>>>>
>>>>>>>> Alternatively could disable auto reloading and manually send 
>>>>>>>> SIGUSR1 to process to trigger a graceful reload after changing the 
>>>>>>>> symlink.
>>>>>>>>
>>>>>>>> That all said, I can't remember if you might have to configure 
>>>>>>>> Apache to tell it to allow following symlinks (Options 
>>>>>>>> FollowSymLinks). If it were static file handling would definitely be 
>>>>>>>> needed, but can't remember if would be required in this case where is 
>>>>>>>> WSGI 
>>>>>>>> application handling things.
>>>>>>>>
>>>>>>>> Graham
>>>>>>>>
>>>>>>>> On 25 Jul 2024, at 5:21 PM, RajKumar Ambadipelli <arkki...@
>>>>>>>> gmail.com> wrote:
>>>>>>>>
>>>>>>>> Ok, If I have only two virtualhosts all the time and I am going to 
>>>>>>>> change only python-path will that work with the direct signal using 
>>>>>>>> SIGUSR1.
>>>>>>>>
>>>>>>>> If the above is possible then I think I have some kind of solution.
>>>>>>>>
>>>>>>>> Thankyou,
>>>>>>>> RajKumar
>>>>>>>>
>>>>>>>> On Thursday 25 July 2024 at 12:35:09 UTC+5:30 Graham Dumpleton 
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> Are you always using the same two virtual host server names and 
>>>>>>>>> just updating the version number in the paths?
>>>>>>>>>
>>>>>>>>> On 25 Jul 2024, at 4:21 PM, RajKumar Ambadipelli <arkki...@
>>>>>>>>> gmail.com> wrote:
>>>>>>>>>
>>>>>>>>> Yes I am adding new virtual hosts  when ever I want to release a 
>>>>>>>>> new version of that services lets say initially my virtualhost config 
>>>>>>>>> will 
>>>>>>>>> be like
>>>>>>>>>
>>>>>>>>> #Students Webservice Config 
>>>>>>>>>  Listen 9002 <VirtualHost *:9002> 
>>>>>>>>>  ServerName test.myapp.com 
>>>>>>>>>  ErrorLog /var/log/webservice_error.log 
>>>>>>>>>  WSGIPassAuthorization On 
>>>>>>>>>  WSGIDaemonProcess Tes9002 python-path=/home/uoadmin/releases/1.0
>>>>>>>>> .0/students:/home/admin/releases/1.0.0/shared 
>>>>>>>>> display-name=%{GROUP} 
>>>>>>>>>  WSGIProcessGroup Tes9002 WSGIApplicationGroup %{GLOBAL} 
>>>>>>>>>  WSGIScriptAlias / /home/admin/releases/1.0.0
>>>>>>>>> /students/conf/wsgi.py 
>>>>>>>>>  <Directory /home/admin/releases/1.0.0/students/conf>
>>>>>>>>>  <Files wsgi.py> Require all granted </Files>
>>>>>>>>>  </Directory> 
>>>>>>>>> </VirtualHost>
>>>>>>>>>
>>>>>>>>> When i want to go for new releases the down part is appended to 
>>>>>>>>> above part 
>>>>>>>>>
>>>>>>>>>  <VirtualHost *:9002> 
>>>>>>>>>  ServerName dev.myapp.com 
>>>>>>>>>  ErrorLog /var/log/webservice_error.log 
>>>>>>>>>  WSGIPassAuthorization On 
>>>>>>>>>  WSGIDaemonProcess Dev9002 python- path=/home/uoadmin/releases/1.1
>>>>>>>>> .0/students:/home/admin/releases/1.1.0/shared 
>>>>>>>>> display-name=%{GROUP} 
>>>>>>>>>  WSGIProcessGroup Dev9002 WSGIApplicationGroup %{GLOBAL} 
>>>>>>>>>  WSGIScriptAlias / /home/admin/releases/1.1.0
>>>>>>>>> /students/conf/wsgi.py 
>>>>>>>>>  <Directory /home/admin/releases/1.1.0/students/conf>
>>>>>>>>>  <Files wsgi.py> Require all granted </Files> 
>>>>>>>>>  </Directory> 
>>>>>>>>> </VirtualHost>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Now I am going to have two virtualhosts with two daemons 1st is 
>>>>>>>>> already recognized by apache server where as second one is not yet 
>>>>>>>>> recognized by apache server
>>>>>>>>>
>>>>>>>>> Thankyou,
>>>>>>>>> RajKumar
>>>>>>>>>
>>>>>>>>> On Thursday 25 July 2024 at 11:40:31 UTC+5:30 Graham Dumpleton 
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>> What is the reason for doing the graceful restart? Is it because 
>>>>>>>>>> you are adding/removing virtual hosts, or making some other Apache 
>>>>>>>>>> config 
>>>>>>>>>> change.
>>>>>>>>>>
>>>>>>>>>> You do not need to do a complete Apache restart if just want to 
>>>>>>>>>> force a daemon process to restart, you can instead send the 
>>>>>>>>>> processes a 
>>>>>>>>>> signal directly. From memory it is SIGUSR1 that triggers a graceful 
>>>>>>>>>> restart 
>>>>>>>>>> of processes, but you will need to confirm that.
>>>>>>>>>>
>>>>>>>>>> On 25 Jul 2024, at 3:28 PM, RajKumar Ambadipelli <arkki...@
>>>>>>>>>> gmail.com> wrote:
>>>>>>>>>>
>>>>>>>>>> When i have 260 microservices those all are light weight 
>>>>>>>>>> applications using same python interpreter and with django rest api 
>>>>>>>>>> framework, and currently each application hosted on apache server 
>>>>>>>>>> usign 
>>>>>>>>>> mod_wsgi daemon mode and my main problem is while making changes to 
>>>>>>>>>> one of 
>>>>>>>>>> application virtualhost other ongoing daemons are distured as i need 
>>>>>>>>>> to 
>>>>>>>>>> reload or restart.
>>>>>>>>>> All those 260 services very light weight each listen to http 
>>>>>>>>>> request on unique ports.
>>>>>>>>>>
>>>>>>>>>> ThankYou
>>>>>>>>>> RajKumar
>>>>>>>>>>
>>>>>>>>>> On Tuesday 23 July 2024 at 16:37:42 UTC+5:30 Graham Dumpleton 
>>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>>> One can optimise embedded mode for better performance, but I 
>>>>>>>>>>> would put a big caveat on that and say is only probably a good idea 
>>>>>>>>>>> to 
>>>>>>>>>>> tackle if you have the one web service.
>>>>>>>>>>>
>>>>>>>>>>> Running 260 micro services in one Apache httpd instance with 
>>>>>>>>>>> mod_wsgi sounds rather scary either way.
>>>>>>>>>>>
>>>>>>>>>>> If you use mod_wsgi daemon mode where each micro service is in 
>>>>>>>>>>> its own daemon process group (with a single process and small 
>>>>>>>>>>> number of 
>>>>>>>>>>> threads), then you might get away with it if these aren't high 
>>>>>>>>>>> volume 
>>>>>>>>>>> sites. That said, it is still a lot of managed daemon mode 
>>>>>>>>>>> processes and 
>>>>>>>>>>> not sure how well Apache will handle that, especially on restarts.
>>>>>>>>>>>
>>>>>>>>>>> Running them all in embedded mode would be a bad idea if each 
>>>>>>>>>>> needs a separate Python interpreter context because the Apache 
>>>>>>>>>>> worker 
>>>>>>>>>>> process would be huge in size. If Apache httpd was configured for 
>>>>>>>>>>> prefork 
>>>>>>>>>>> MPM it would be even worse because you would have a potentially 
>>>>>>>>>>> large 
>>>>>>>>>>> number of worker processes since all are single thread. You also 
>>>>>>>>>>> run a big 
>>>>>>>>>>> risk with micro services interfering with each other in strange 
>>>>>>>>>>> ways if 
>>>>>>>>>>> running in different sub interpreter contexts of the one process 
>>>>>>>>>>> due to how 
>>>>>>>>>>> Python imports C extensions, and process wide environment variables 
>>>>>>>>>>> work. 
>>>>>>>>>>> Various third party Python packages with C extensions will not even 
>>>>>>>>>>> work in 
>>>>>>>>>>> Python sub interpreters (eg., anything related to numpy).
>>>>>>>>>>>
>>>>>>>>>>> You definitely want event or worker MPM, but even then, for 260 
>>>>>>>>>>> micro services, if they need separate Python interpreter context I 
>>>>>>>>>>> can't 
>>>>>>>>>>> really recommend it still because of size concerns for processes 
>>>>>>>>>>> and 
>>>>>>>>>>> potential cross sub interpreter interference.
>>>>>>>>>>>
>>>>>>>>>>> So the question is whether when you said 260 micro services you 
>>>>>>>>>>> really mean independent web applications, or whether you just mean 
>>>>>>>>>>> you have 
>>>>>>>>>>> 260 different unique HTTP handlers as part of the one application, 
>>>>>>>>>>> and thus 
>>>>>>>>>>> in the same Python interpreter context.
>>>>>>>>>>>
>>>>>>>>>>> When people talk about such large number of micro services, 
>>>>>>>>>>> usually you would not be aiming to host them in a single Apache 
>>>>>>>>>>> instance 
>>>>>>>>>>> but would instead be looking at running something which can handle 
>>>>>>>>>>> things 
>>>>>>>>>>> at scale like Kubernetes and creating separate deployments for them 
>>>>>>>>>>> in 
>>>>>>>>>>> that, relying on the ingress routing Kubernetes provides to get 
>>>>>>>>>>> traffic to 
>>>>>>>>>>> the appropriate micro service.
>>>>>>>>>>>
>>>>>>>>>>> Graham
>>>>>>>>>>>
>>>>>>>>>>> On 23 Jul 2024, at 7:13 PM, RajKumar Ambadipelli <arkki...@
>>>>>>>>>>> gmail.com> wrote:
>>>>>>>>>>>
>>>>>>>>>>> mod_wsgi in embeded mode allows graceful restart,
>>>>>>>>>>> What are the potential issues that I will face if I use mod_wsgi 
>>>>>>>>>>> in embedded mode instead of daemon mode,
>>>>>>>>>>> I have to host around 260 python micro services.
>>>>>>>>>>>
>>>>>>>>>>> I have saw your blog on 'why are you using mod_wsgi in embedded 
>>>>>>>>>>> mode?' But, I unable to understand it very well in that you 
>>>>>>>>>>> mentioned if we 
>>>>>>>>>>> configure mpm settings correctly then mod_wsgi in embedded mode is 
>>>>>>>>>>> better 
>>>>>>>>>>> than daemon mode but not mentioned any configurations.
>>>>>>>>>>>
>>>>>>>>>>> Thanking you,
>>>>>>>>>>> RajKumar
>>>>>>>>>>>
>>>>>>>>>>> On Tuesday 23 July 2024 at 13:04:50 UTC+5:30 Graham Dumpleton 
>>>>>>>>>>> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> On 23 Jul 2024, at 4:09 PM, RajKumar Ambadipelli <arkki...@
>>>>>>>>>>>> gmail.com> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>> I am using Apache Server with mod_wsgi for hosting my python 
>>>>>>>>>>>> django applications. Versions: Python 3.9.18 Server version: 
>>>>>>>>>>>> Apache/2.4.57 
>>>>>>>>>>>> mod-wsgi==4.7.1
>>>>>>>>>>>>
>>>>>>>>>>>> One of my application virtual host configuration with two 
>>>>>>>>>>>> different versions:
>>>>>>>>>>>>
>>>>>>>>>>>> ...
>>>>>>>>>>>>
>>>>>>>>>>>> So, When the source code is modified I can referesh the wsgi 
>>>>>>>>>>>> daemon using touch 
>>>>>>>>>>>> /home/uoadmin/releases/1.1.0/students/conf/wsgi.py touch 
>>>>>>>>>>>> /home/uoadmin/releases/1.0.0/students/conf/wsgi.py But when I 
>>>>>>>>>>>> added new 
>>>>>>>>>>>> virtualhost to the above configuration file or else when I modify 
>>>>>>>>>>>> above 
>>>>>>>>>>>> file the apache server unable to recognize modifications made the 
>>>>>>>>>>>> existing 
>>>>>>>>>>>> virtualhost or newly added virtualhost until doing apachectl 
>>>>>>>>>>>> graceful (or) 
>>>>>>>>>>>> apachectl restart (or) systemctl reload httpd but all the commands 
>>>>>>>>>>>> above 
>>>>>>>>>>>> killing the ongoing requests forcefully directly terminating them.
>>>>>>>>>>>>
>>>>>>>>>>>> How to handle above situation.
>>>>>>>>>>>>
>>>>>>>>>>>> I want to know how will apache server recognize modifications 
>>>>>>>>>>>> to virtualhost or newly added virtual host without reloading or 
>>>>>>>>>>>> restarting.
>>>>>>>>>>>>
>>>>>>>>>>>> It can't, Apache httpd requires you to perform a restart 
>>>>>>>>>>>> (reload) in order to read changes to the Apache configuration 
>>>>>>>>>>>> files. That 
>>>>>>>>>>>> is how it works.
>>>>>>>>>>>>
>>>>>>>>>>>> If above is not possible then is there anyway for restarting or 
>>>>>>>>>>>> reloading apache server gracefully that is without terminating or 
>>>>>>>>>>>> killing 
>>>>>>>>>>>> other ongoing requests or daemons while using apache server + 
>>>>>>>>>>>> mod_wsgi for 
>>>>>>>>>>>> serving python with django?
>>>>>>>>>>>>
>>>>>>>>>>>> Unfortunately not. The way Apache httpd manages the mod_wsgi 
>>>>>>>>>>>> daemon processes it will force a restart of those as well and even 
>>>>>>>>>>>> though 
>>>>>>>>>>>> Apache has a concept of graceful restart for it's own worker child 
>>>>>>>>>>>> processes, it doesn't extend that to managed process like the 
>>>>>>>>>>>> mod_wsgi 
>>>>>>>>>>>> daemon process and always restarts them immediately even when it 
>>>>>>>>>>>> is a 
>>>>>>>>>>>> graceful restart. There is nothing that can be done about this.
>>>>>>>>>>>>
>>>>>>>>>>>> The only way you could handle it if you need to be able to 
>>>>>>>>>>>> freely restart the main Apache server and have it not affect your 
>>>>>>>>>>>> Python 
>>>>>>>>>>>> web applications, is to run the Python web applications in 
>>>>>>>>>>>> distinct 
>>>>>>>>>>>> secondary web server processes and use the main Apache server to 
>>>>>>>>>>>> only proxy 
>>>>>>>>>>>> requests through to the secondary web servers.
>>>>>>>>>>>>
>>>>>>>>>>>> For the second web servers you could use mod_wsgi-express to 
>>>>>>>>>>>> make things easier, but you could also just not use mod_wsgi for 
>>>>>>>>>>>> the 
>>>>>>>>>>>> secondary web servers and use gunicorn or some other standalone 
>>>>>>>>>>>> Python 
>>>>>>>>>>>> WSGI/asyncio web server.
>>>>>>>>>>>>
>>>>>>>>>>>> Graham
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>> -- 
>>>>>>>>>>> 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 modwsgi+u...@googlegroups.com.
>>>>>>>>>>> To view this discussion on the web visit 
>>>>>>>>>>> https://groups.google.com/d/msgid/modwsgi/d28663bc-a143-4e4f-949d-38e065c5ac9fn%40googlegroups.com
>>>>>>>>>>>  
>>>>>>>>>>> <https://groups.google.com/d/msgid/modwsgi/d28663bc-a143-4e4f-949d-38e065c5ac9fn%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>>>>>>> .
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>> -- 
>>>>>>>>>> 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 modwsgi+u...@googlegroups.com.
>>>>>>>>>>
>>>>>>>>>> To view this discussion on the web visit 
>>>>>>>>>> https://groups.google.com/d/msgid/modwsgi/1fffb2f7-ed8a-4d88-a52b-00e7e82e98d5n%40googlegroups.com
>>>>>>>>>>  
>>>>>>>>>> <https://groups.google.com/d/msgid/modwsgi/1fffb2f7-ed8a-4d88-a52b-00e7e82e98d5n%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>>>>>> .
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>> -- 
>>>>>>>>> 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 modwsgi+u...@googlegroups.com.
>>>>>>>>>
>>>>>>>>> To view this discussion on the web visit 
>>>>>>>>> https://groups.google.com/d/msgid/modwsgi/27697b57-c903-4881-bddd-691060d62b47n%40googlegroups.com
>>>>>>>>>  
>>>>>>>>> <https://groups.google.com/d/msgid/modwsgi/27697b57-c903-4881-bddd-691060d62b47n%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>>>>> .
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>> -- 
>>>>>>>> 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 modwsgi+u...@googlegroups.com.
>>>>>>>>
>>>>>>>> To view this discussion on the web visit 
>>>>>>>> https://groups.google.com/d/msgid/modwsgi/0794a799-7f70-4d68-affe-b2b7a4f43529n%40googlegroups.com
>>>>>>>>  
>>>>>>>> <https://groups.google.com/d/msgid/modwsgi/0794a799-7f70-4d68-affe-b2b7a4f43529n%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>>>> .
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>> -- 
>>>>>> 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 modwsgi+u...@googlegroups.com.
>>>>>>
>>>>>> To view this discussion on the web visit 
>>>>>> https://groups.google.com/d/msgid/modwsgi/7edb7907-915b-41a6-a581-097ea1b87dc0n%40googlegroups.com
>>>>>>  
>>>>>> <https://groups.google.com/d/msgid/modwsgi/7edb7907-915b-41a6-a581-097ea1b87dc0n%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>> .
>>>>>>
>>>>>>
>>>>>>
>>>> -- 
>>>> 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 modwsgi+u...@googlegroups.com.
>>>>
>>>> To view this discussion on the web visit 
>>>> https://groups.google.com/d/msgid/modwsgi/618674de-ba2c-49df-8df9-10db6624df7fn%40googlegroups.com
>>>>  
>>>> <https://groups.google.com/d/msgid/modwsgi/618674de-ba2c-49df-8df9-10db6624df7fn%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>> .
>>>>
>>>>
>>>>
>> -- 
>> 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 modwsgi+u...@googlegroups.com.
>>
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/modwsgi/f08337f6-63a6-4fc4-a630-f437187b2b2en%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/modwsgi/f08337f6-63a6-4fc4-a630-f437187b2b2en%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>>
>>
> -- 
> 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 modwsgi+u...@googlegroups.com.
>
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/modwsgi/7433c99a-c564-4a3c-8474-349200543159n%40googlegroups.com
>  
> <https://groups.google.com/d/msgid/modwsgi/7433c99a-c564-4a3c-8474-349200543159n%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>
>
>

-- 
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 modwsgi+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/modwsgi/289bc037-3387-45ee-a81d-2045f22378fcn%40googlegroups.com.

Reply via email to