Live data from Hacker News

Python and Django on Heroku

blog.heroku.com

51–60 of 75 posts

Re: Python and Django on Heroku

#51

As much as I've come to enjoy and appreciate the various start-ups whose mantra was "We're Heroku with Python/Django capabilities", it will be interesting to see which of those survive the next 8-12 months now that Heroku officially supports that stack. It'd be a shame to see ep.io and Gondor go the way of the dodo bird, but what sets them apart now?

> ...but what sets them apart now?

As a very happy user of some of Python PaaS services [1], there are a few reasons why I don't see myself switching to Heroku:

* These services are written by our community, for our community. The principles at most of these companies are people I've known for years. I've reviewed their code; they've reviewed mine. We'd argued, commiserated, and bought each other whiskey. They've helped shape the Python/WSGI/Django ecosystems. Their tools embody the best practices from our communities because they were there when those practices were debated and determined.

This is by no means a slight on Heroku's staff: I've met people from their team, as well, and they're wicked smart, very motivated, and highly focused on delivering an awesome product. Which it is! But as a company, Heroku is going to have to do some work to get to the same level of trust as the companies that have grown organically out of our community.

* Deploying a Python stack on Heroku is something of a small pain: there are few defaults, so you're left to do most of it by hand.

Take, for example, the bits from the Heroku/Django tutorial about configuring Celery. Not a lot of work, to be sure, but it is some work, and the result won't perform well at all (it uses a database for message transport instead of something that'll perform better). On mot Python-specific PaaS offerings, a single line in a config file (or checkbox in a web UI) gets you a fully-configured, optimized, ready-to-roll Celery setup.

I'm pretty damn good at deploying Python setups. I'm not going to use a PaaS offering unless it provides similar features to a hand-rolled setup for less work/money.

* On Heroku, I'm a small fish in a large pond. I'm the weird customer doing Python, but the bulk of their cash (presumably) comes in from their Ruby customers. Deploying Python on Heroku feels rough around the edges. A trivial example is the broken links in the Python documentation: it's no big deal, and easily fixed, but the many similar rough edges send the message that Python support is a hobby project, a sideline to the main business.

This will probably be fixed with time, I think, but again: it's going to be quite a while until I feel I'll get the same level of support on Heroku as on a tool that comes out of the Python community.

* Finally, Heroku really expensive compared to most of the Python-specific offerings. Maybe a typical Django site features more "pieces" than a typical Ruby one (???) -- a standard "smallish" site of mine will consist of Django, a task queue (Celery), a search server (Solr), a non-relational DB (Redis), and a relational database (PostgreSQL).

On Heroku, this will easily run me $100/mo. By comparison, I'm paying between $15/mo and $50/mo for sites of similar size on some of Heroku's competitors.

So all this to say: I welcome Heroku to this space; more competition is awesome. It'll really make life better for every Python web dev. But it's going to take some serious work to convince me to switch.

[1] I'm really sorry to be obtuse here, but I'm trying to be careful not to write anything that might be construed as an endorsement. As a Django core dev I don't feel comfortable playing favorites (just look at the drama that ensued when GvR had the temerity to say that he liked Django...)

Re: Python and Django on Heroku

#52

As much as I've come to enjoy and appreciate the various start-ups whose mantra was "We're Heroku with Python/Django capabilities", it will be interesting to see which of those survive the next 8-12 months now that Heroku officially supports that stack. It'd be a shame to see ep.io and Gondor go the way of the dodo bird, but what sets them apart now?

Epio cofounder here - we're not worried by this, and we've known it was coming for ages now. The hosting market is plenty big enough for more than one player - we're expanding to multiple languages, much like Heroku expanded from Ruby, which provides an ample feeding ground of old-style hosts to slowly steal business from - and there's also still a lot of room for innovation. Heroku, as much as I like their product -…

"some of which are those low-level-design type of choices where if you go the other route, a different set of people complain"

This is actually a wonderful scenario. If either party successfully grows the market, both can benefit.

Re: Python and Django on Heroku

#53
post #39

Python 2.7? They’re years ahead of Google App Engine! Addendum: The previous statement is slightly tongue-in-cheek, but: (1) GAE is running a version of Python (2.5) so old, that it’s hard to get fully patched binaries of it anymore (depending on your platform); and (2) By “years ahead,” I don’t mean it will take Google years to catch up, but merely that their Python version is years old. Puzzling, given that Guido w…

I know this pain; I am forced to work with GAE every day now. And let me tell you, the only thing worse than not having 2.7's features is having un-patched bugs from as early as 2008--like one that prevents keyword arguments from being unicode strings, for instance! Seeing the other list of changes/"mandatory improvements" in child's link makes me weep all the more. I will have to start another crusade to get 2.7 support and between stuff like documentation, testing (gasp!), Django-nonrel, and HRD, I am fresh out of crusade slots.

Re: Python and Django on Heroku

#54

As much as I've come to enjoy and appreciate the various start-ups whose mantra was "We're Heroku with Python/Django capabilities", it will be interesting to see which of those survive the next 8-12 months now that Heroku officially supports that stack. It'd be a shame to see ep.io and Gondor go the way of the dodo bird, but what sets them apart now?

> ...but what sets them apart now? As a very happy user of some of Python PaaS services [1], there are a few reasons why I don't see myself switching to Heroku: * These services are written by our community, for our community. The principles at most of these companies are people I've known for years. I've reviewed their code; they've reviewed mine. We'd argued, commiserated, and bought each other whiskey. They've hel…

> These services are written by our community, for our community. The principles at most of these companies are people I've known for years.

Of all the points you raise, this is probably the least relevant in business terms. PaaS is about opening up platforms to all comers; one's standing in relatively insular language communities doesn't say much about one's marketability outside those communities.

Re: Python and Django on Heroku

#55
post #50

Python minimizes magic and maintains backwards-compatibility? LOL. (I'm a programmer who recent dived into python - it's awesome and it's easily my favourite language to use now - but those statements are fallacies).

Compared to Ruby on Rails, there's less magic going on.

Re: Python and Django on Heroku

#56

As much as I've come to enjoy and appreciate the various start-ups whose mantra was "We're Heroku with Python/Django capabilities", it will be interesting to see which of those survive the next 8-12 months now that Heroku officially supports that stack. It'd be a shame to see ep.io and Gondor go the way of the dodo bird, but what sets them apart now?

Epio cofounder here - we're not worried by this, and we've known it was coming for ages now. The hosting market is plenty big enough for more than one player - we're expanding to multiple languages, much like Heroku expanded from Ruby, which provides an ample feeding ground of old-style hosts to slowly steal business from - and there's also still a lot of room for innovation. Heroku, as much as I like their product -…

Well said and epio is still my favorite implementation so far so don't go anywhere.

Re: Python and Django on Heroku

#57
post #5

Interesting... I wonder if this makes Google App Engine more appropriate for internal apps for Google Apps customers? For quick/easy personal hacking/development having a Python stack on Heroku seems pretty attractive now.

Personally I don't like Google App Engine, but I can understand its value -- it has reasonable free quotas (even now, after the pricing scheme changed), and your app ends up running on Google's infrastructure which is rock solid. However, I never understood why people like Heroku ... it's like renting instances on EC2, only 10 times more expensive. Of course, people then start enumerating a whole bunch of stuff that…

I don't think that any of Heroku's paid plans swap out Dynos. Sure, for the free plans they do - seems fair to me.

Re: Python and Django on Heroku

#58
post #25

Earlier quoted context omitted.

"it's like renting instances on EC2" False. I'd suggest you take a look at their architecture overview. It's not like renting instances on EC2 at all because dynos != virtual machines. http://www.heroku.com/how "Of course, people then start enumerating a whole bunch of stuff that they don't have to worry about when using Heroku. However, when starting out, configuring a server is just like configuring your localhost…

dynos != virtual machines Well, yeah, a small instance on EC2 is the equivalent of 20 dynos, maybe more. What you do get with dynos is scaling out when you need it, however you can do the same thing by having a prepared AMI, a load-balancer and a bunch of scripts with which you can start new instances in seconds. focus on rapid iteration I really do think that sysadmin work and rapid iteration are orthogonal. When yo…

> you can do the same thing by having .... and a bunch of scripts with which you can start new instances in seconds.

Right, so if you already have everything you need, you don't need to buy it. This argument is similar to "I don't need water when I'm not thirsty". Hardly compelling.

> administrating you servers is something that hardly takes up any time

Sure if your servers never get any traffic, or you never scale.

> It took me a day's work to configure an EC2 instance, including a deployment workflow with Capistrano (for the first time ever). That server is still running just fine, with no further maintenance.

Right, it took me less than a minute to do that with heroku, and with less dependencies (on capistrano). When I decide my app needs an extension written in node, that is another minute on deployment for me, and another day for you. I'd gladly compete on those terms :)

> And if small deployments is not Heroku's strength, than what is? If you've got a successful app that needs special infrastructure care and you can't afford a good developer/sysadmin to take care of it, then you're doing it wrong.

This is just your highly opinionated view of things. Who ever said anything about 'special infrastructure'... Heroku deal in commodity infrastructure (that's the point). You also never successfully made the point that small deployments are not their strength.

Re: Python and Django on Heroku

#59
Anyone know if there's a self-contained way to spool up a dyno sporadically to complete scheduled tasks?

I have a webapp now that's hosted on a VPS and uses Celery to schedule tasks. The tasks themselves only take about a second, the dyno needs to stay active for ~5 minutes to service a bunch of HTTP requests from another webservice that will result from the task, and then shut down until the next task. There are O(100) tasks spaced throughout the day, and they each must be completed at a very specific time. My aggregate dyno-hour requirements are very low, but I haven't figured out a way for a dyno to turn itself on and off for scheduled tasks this way. Admittedly, my use case is a bit niche, but a solution sure would be useful. Whiteboxing my webapp in such a way that it could be deployed on Heroku would be great, but keeping a dyno running all month to run the Celery polling process, when 'actual' computing is happening << 1 percent of the time, is a bit steep :)

Post reply on HN