Phusion Passenger for Python?

Today I came across several postings on various websites about uWSGI, a WSGI server and Apache module written in C. As WSGI bears a lot of similarities to Rack – after all, Rack was based on WSGI – this caught my interest. I think it’s safe to at least say that – before Phusion Passenger came to the scene – Python web app deployment was less of a pain than Ruby web app deployment, thanks to mod_wsgi as well as possibly other Python hosting modules or application servers that I might not know of. Both mod_wsgi and uWSGI differ significantly from Phusion Passenger when it comes to design choices, though the common goal is web app deployment. The fact that mod_wsgi and uWSGI are developed independently from Phusion Passenger makes them all the more interesting. It’s refreshing to see how other people try to tackle the same problem.

What is the state of Python web app deployment today? Is it on par with Ruby? I honestly don’t know because although I’ve written plenty of Python code (mostly desktop apps and server scripts), I’ve never written a Python web app before beyond hello world, nor deployed one. Which is why this comment on Hacker News caught my attention:

Much needed. We pythonistas are still waiting for a deployment option as slick as ruby passenger.

So there is at least one person in the world who thinks that Phusion Passenger is slick and apparently better than anything that’s current available in Python land. Why, I’m flattered. :) However, I don’t know whether this is just the opinion of one man or whether there’s a general consensus in the Python community that deployment can and should be better.

What is better? As one of the authors of Phusion Passenger I define “better” as “easier”, “smoother”, “less painful”, which should also reveal the philosophy behind many of Phusion Passenger’s design choices. Not everybody agrees with Phusion Passenger’s design choices though. Graham Dumpleton, author of mod_wsgi, thinks… well let’s keep it at saying that he doesn’t think Phusion Passenger is a work of art. Needless to say I do not agree with his opinion nor his reasoning behind it. But Graham probably had other design choices and design philosophies than Phusion Passenger so he’s entitled to his opinions.

If there are any Pythonistas out there, please share your thoughts! Do you think there would be any demand for a hypothetical “Phusion Passenger for Python”? If not, what do you think about the current Python web app deployment situation? Do you think there’s room for improvement?

14 Comments »

  1. Mustang said,

    November 21, 2009 @ 11:53 pm

    Check this out. http://tartley.com/?p=843

  2. Hongli said,

    November 22, 2009 @ 12:07 am

    Thanks for the link Mustang, though that post talks about general Python software distribution to end users. My post is about web application deployment, where the user is actually the system administrator or a developer who wants to put a web app online.

  3. Tiago Bastos said,

    November 22, 2009 @ 12:07 am

    Yes. Passenger is a dead simple solution. And hey:
    “…Simple is better than complex.
    Complex is better than complicated…” – PEP 20

  4. Marcelo Minholi said,

    November 22, 2009 @ 12:55 am

    I’m using Passenger WSGI with Django on Dreamhost. http://wiki.dreamhost.com/Passenger_WSGI#Passenger_WSGI_and_Django

  5. Robson Mendonça said,

    November 22, 2009 @ 1:09 am

    I believe the python deployment is not a problem when you have a VPS or Dedicated server, because you have the necessary freedom to do what you want to do. But If all us believe that python or ruby are better than PHP, we must all agree with the fact that PHP deployment is completely gracefully and painless.
    So, I believe that something like Phusion Passenger can contribute a lot to became the deployment of python applications on shared environments more easy and painless.

    Manda ver!

  6. Karl Blessing said,

    November 22, 2009 @ 6:33 am

    Thanks for your comment on my Passenger + Ngnix + Python article here : http://kbeezie.com/view/using-python-nginx-passenger/

    I’ll be updating some of the information when I get a chance from what you mentioned regarding rails and such.

  7. Mengu said,

    November 22, 2009 @ 8:42 am

    Passenger made deployment as easy as PHP for Ruby so I think it would be very good to deploy Python web application with Passenger.

  8. axaroth said,

    November 22, 2009 @ 10:53 am

    Not sure about what you are talking regarding python. I have used several frameworks but for the most Zope and never I have had problem to deploy an application. I think this is due to the fact that I use Apache only as a proxy: Zope has its web server and for simple applications I use ‘paster serve’. I have had always a dedicated machine or a provider with support for Python.

  9. Herberth Amaral said,

    November 22, 2009 @ 1:00 pm

    I develop in PHP since 2005 and the most painful part in Python adopting was the deployment. There is a set of ways to deploy a Python app, but none so trivial as PHP deployment and this confused me (probably many ohter people too..).

    So, it would be great to see Phusion Passenger for Python :D

  10. Giuseppe said,

    November 22, 2009 @ 2:22 pm

    Phusion Passenger for Python would be GREAT, we really need a good option for Python deployment on shared hostings.

  11. Graham Dumpleton said,

    November 22, 2009 @ 10:29 pm

    You are putting a lot of emphasis on my comments which are undeserved. I was taking issue with one minor aspect in relation to how you hook into Apache. As you will know that constitutes only a few percent, if that, of what your overall application does and is really a very insignificant point. So please don’t try and characterise me as having an issue with ‘many design choices’ of Phusion Passenger and disparaging me for not seeing it as a ‘work of art’, as it is stretching the truth a great deal. FWIW, I have still never even found time to look beyond that few dozen lines of code in Phusion Passenger and because of that I have never commented on Phusion Passenger at all in regards to its core functionality.

  12. Hongli said,

    November 22, 2009 @ 10:43 pm

    Graham, I meant no offense with that comment. I was just pointing out that not everybody agrees with the way we designed Phusion Passenger, which is fine. That said, I’ve taken note of your comment.

  13. Karl Blessing said,

    November 23, 2009 @ 5:24 am

    Reading back on some of the comments. I too would love to see a version of Passenger dedicated for Python distribution, perhaps something that would make it easier to incorporate existing frameworks into Passenger (such as Django, Webpy, etc), however maintenance is still better than using fastcgi or proxy_pass to a separate WSGIServer when using it with Nginx.

  14. Felix said,

    March 18, 2010 @ 3:40 pm

    Ruby has Rack, Python has WSGI and Perl has PSGI. You should think in adding support for PSGI too. It would make Passenger the most complete solution for deploying webapps.

RSS feed for comments on this post · TrackBack URI

Leave a Comment