19 Feb 2018

Heroku vs Pythonanywhere

Compare Heroku with Pythonanywhere for Python hosting

Heroku vs Pythonanywhere
Category: Services

Overview

Feature Heroku Pythonanywhere
Languages Python, NodeJS, Ruby, Java, Go, PHP, Scala, Clojure Python
Pricing Free, $7-$500 Free, $5-$500
Billing Per Dyno per Month Fixed Monthly
Free Plan 512MB RAM, 1 web/1 worker dyno 512MB RAM, 100 CPU seconds
Database PostgreSQL (default), MySQL MongoDB Redis (with plugins) MySQL (default), PostgreSQL (paid)

Detailed Comparison

Heroku

Heroku Logo

Heroku provides a PaaS architecture (Platform as a Service), with support for many programming languages. The free account offers 1 web and 1 worker dyno (What is a Dyno?). The apps running on free dynos sleep after 30 minutes of inactivity, and it takes about 15 seconds to wake up a sleeping app on the first request. Each account has 500 hours of free dynos per month to use for a maximum of 5 apps, but the account can be verified with a credit card to increase the limit to 1000 hours per month and 100 apps. This is more than enough to run one app for the entire month. Verification also allows custom domains to be added to apps. All Heroku subdomains have SSL Certificates for HTTPS connections, but custom domains on the free account don’t. Any paid account however has support for SSL certificates with auto renewal.

Heroku creates apps directly from you version control (Git), by adding another remote link to the app. Heroku CLI can be used to create apps, add plugins and run database queries easily.

Pros

Cons

  • The Ephemeral Filesystem does not allow writing to the local filesystem, thus all changes to be made are done via the version control system
  • Can be too expensive for large projects

Pythonanywhere

Pythonanywhere Logo

Pythonanywhere is like a traditional hosting platform, where you can create apps using the inbuilt file manager or by pulling from a Git repository. It has many more features like IPython notebooks (for paid accounts) and shared consoles.

The free account does not sleep like in Heroku, but I have noticed that it is a bit slower than heroku (non - sleeping apps). It has limited CPU cycles for running comands in the online console. Free accounts cannot have custom domains for apps, and all Pythonanywhere subdomains have SSL Certificates for HTTPS connections.

Pros

  • Very easy to use
  • Competitive, low prices
  • Shared Consoles

Cons

  • You have to git-pull in the Pythonanywhere console to update changes

Conclusion

Both Heroku and Pythonanywhere have their pros and cons, and differ mainly in their architecture. Heroku has a slight learning curve and guidelines have to be followed for language specific builds, whereas Pythonanywhere is relatively simple.

For simplicity in learning and deployment, and for teachers (IPython notebooks, Shared consoles) we recommend Pythonanywhere. For quick buiding and deployment, and for adding various plugins (NoSQL databases, Logging, Caching) we recommend Heroku.