I'm a Python dev trying to get comfortable using Apache and mod_wsgi in its 'daemon' mode to deploy Python web apps.
I've read a lot of the mod_wsgi docs but I'm still not sure I have a clear, concise understanding of how to think about and use the different execution contexts(?) available when deploying an app: application groups, process groups, processes, and threads. The docs go into great detail on each of them but I couldn't find a high-level explanation/summary/TLDR of how to use / think about them, so that someone unfamiliar with webserver administration can quickly grasp how they all fit together. I wish there was a TLDR for how to use each of them and how they relate to each other.
After reading through a lot of the docs, I think I have an concise picture of how I'm supposed to think about / use these different execution contexts, but I'm not sure if I'm mistaken or missing something:
Controlling the number of each type of execution context that exists on your server is like a different knob you can twist to tweak how those resources should be allocated.
The structures have a hierarchy of parent-child relationships as follows:
(From top-to-bottom, parent-to-child):
So an application group has one or more process groups "underneath" it, a process group has one or more processes, and a process has one or more threads.