[Python-il] [pyweb-il:427] Re: mod_python or mod_wsgi?
Graham Dumpleton
graham.dumpleton at gmail.com
Tue Sep 22 14:16:01 IDT 2009
A few corrections.
On Sep 21, 6:43 pm, Idan Gazit <i... at pixane.com> wrote:
> Short answer: mod_wsgi is awesome. I don't use mod_python anymore if I
> can help it.
>
> Long(er) answer: mod_wsgi isn't the perfect solution but it works much
> better than mod_python right now.
>
> With mod_python, each apache thread/worker process/etc must load a
> copy of the python interpreter into memory.
No, that isn't quite what happens. Read:
http://blog.dscpl.com.au/2009/03/python-interpreter-is-not-created-for.html
Overall, mod_python and mod_wsgi behave exactly the same. The only
difference is that by default, mod_python uses one Python sub
interpreter per virtual host, where as mod_wsgi by default allocates a
sub interpreter to each mounted WSGI application.
> This has several bad side
> effects:
>
> 1. If you have more than one site run off the same apache, then EVERY
> instance of apache threads/workers will have a whole python
> interpreter in their context.
Each process will have a Python interpreter for the relevant context,
not each thread.
> That's quite a few megs of ram per
> request, even requests for my_small_image.jpg.
You shouldn't be serving static files from your Python web
application. When Apache is properly configured, the serving of static
files doesn't go anywhere near the Python code.
> 2. If you have more than one python site on the same apache, you
> cannot isolate them from one another, because the same python
> interpreter is loaded for them all.
Wrong. By default mod_python uses one per virtual host. You can use
the mod_python PythonInterpreter directive to override this and
allocate a separate sub interpreter for each application instance.
This isn't necessary with mod_wsgi as a separate sub interpreter per
mounted WSGI application is the default already.
> What happens if you need v1.0 of a
> library for this app and v1.1 for another? Can't do it with mod_python
> AFAIK.
Use PythonInterpreter directive properly and you can do this.
> In mod_wsgi, each site can have its own private python
> virtualenv.
Only by virtue of fact that each WSGI application by default gets a
separate sub interpreter.
> There's a lot of smaller reasons for using mod_wsgi but based on those
> two reasons, I would warmly recommend the usage of mod_wsgi today.
> I've found it to be stable, efficient, and much less resource-
> intensive than mod_python.
I'd also suggest reading:
http://blog.dscpl.com.au/2009/03/load-spikes-and-excessive-memory-usage.html
http://code.google.com/p/modwsgi/wiki/VirtualEnvironments
http://code.google.com/p/modwsgi/wiki/ProcessesAndThreading
Graham
> -I
>
> On Sep 21, 2009, at 11:19 AM, Ahik Man wrote:
>
>
>
> > Hello,
>
> > There are some articles (like the one bellow) that claimed that
> > mod_wsgi is better then mod_python.
> > Is anybody having a real experience with comparison like that?
> > Any recommendations related to mod_wsgi?
>
> >http://www.technobabble.dk/2008/aug/25/django-mod-wsgi-perfect-match/
>
> > Thanks,
> > Ahik
>
> > >
>
>
> smime.p7s
> 3KViewDownload
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "PyWeb-IL" group.
To post to this group, send email to pyweb-il at googlegroups.com
To unsubscribe from this group, send email to pyweb-il+unsubscribe at googlegroups.com
For more options, visit this group at http://groups.google.com/group/pyweb-il?hl=en
-~----------~----~----~----~------~----~------~--~---
More information about the Python-il
mailing list