- Great shell access. Ability to install python modules, or anything else you might need. You will love checking out source code from shell to update your production (no need for FTPing anything anymore!)
- Very good performance and reliability
- Great support + wealth of info on help knowledge base and in the forums. (FORGET bluehost or anything else you ever tried). I was surprised by amount of answers I found to what I thought would be difficult questions.
- You can use regular database and you can do joins (see app engine minus #2)
- Setting up initial deployment can be a bit tricky the first few times around (as is to be expected from shell).
- Growing-scaling can be expensive and you probably will not survive beign “slashdotted”
- Free to start with
- Initial database is easier to setup.
- Deployment is a breeze
- Enforcement of “good” design principles from the start which help you with #5. (Such as hard limits, db denormalizing etc)
- Scalability (but this does not come free – you need to think ahead).
- No maintanence: auto backups, security comes for free, logging + centralized dashboard, software updates are automatic.
- Setting up Django on App Engine is not so straightforward, as well as getting used to this setup. The webapp framework from google is weak.
- Database model takes a little bit of time to wrap your head around. THis is not your moma’s SQL server. For example you have to denormalize your DB from the start, and you cannot do Joins (unless they are self joins)
- The usual things you are used to are not always there. Some things such as testing and data-importing are not that easy anymore.
- You are tied down to App Engine and migrating your data to another DB or server, while not impossible, is not easy. (Not that you do data migration that often! Probably never)
- Hard limits in requests, responses and file sizes (last time I heard about 1MB).
- App Engine currently supports Python 2.5 only.
Can’t think of anything else so far.
I am currently with Webfaction and am testing App Engine as well. I have no difficulty going from Django-Webfaction to App-Engine way of thinking. However, I am not sure if the AppEngine -> Standalone servers route would be just as easy.
I can’t speak for Google App Engine, but as a rather recent Django user myself I recently moved my development site over to a WebFaction server and I must say I was extremely impressed. They are extremely friendly to Django setups (among others) and the support staff answered any small problems I had promptly. I would definitely recommend them.
For other Django-friendly hosts, check out Djangofriendly.com.
- Is it possible to return an HttpResponse in django with text & a json object?
- Passing values to constructor of custom HTMLElement
- Difference between JSONParser and JSONRenderer
- How to pass a queryset to a ModelChoiceField using a self.field_value in Django ModelForms
- Django: running manage.py always aborts
If you have already written your django application, it may be really difficult to install it on Google App Engine, since you will have to adapt your data model. GAE uses big table, a (key,data) store, instead of a traditional relational model. It is great for performance but makes your programming more difficult (no built in many-to-many relationship handlers, for example).
Furthermore, most apps available for django will not work on GAE since these apps use the relational data model. The most obvious problem is that the great admin app of django will not work. Furthermore, GAE tends to make you use google accounts for identification. This can be circumvented but again, not using readily available django apps. This could be great for you, but it can be a hassle (for example, lots of user names are already taken at google).
So, my final advice is that, if you are a beginner, you should avoid GAE.
If you are based in Europe, djangohosting.ch is also a good choice, instead of webfaction.
- Getting error cannot import name 'six' from 'django.utils' when using Django 3.0.0 latest version
- How to do Django JSON Web Token Authentication without forcing the user to re-type their password?
- Django – template context processors – breaking my app
- Django prefetch_related's Prefetch, order_by?
A bit late with my answer, but nevertheless… I am Django beginner and have my first Django App up and running at GAE. It was App Engine Patch that made it happen. Using it you have django admin and several other apps available out of the box. If you’d like to try it, go for the trunk version. This project is reasonably well documented and have responsive community.
- Django cascade delete on reverse foreign keys
- Override serializer delete method in Django RF
- Why does python new york time zone display 4:56 instead 4:00?
- Can we have Django DateTimeField without timezone?
I’m a Google app engine developer, so I can’t say much about webfaction, but as far as I have used it setting up a web app with app-engine is pretty straight forward¹. The support staff however is not quite good.
- Django Tests: setUpTestData on Postgres throws: "Duplicate key value violates unique constraint"
- Debug Toolbar for ASP.NET
- Django-registration, force unique e-mail
- Error "Could not load Boto's S3 bindings."
- Django Model Method or Calculation as Field in Database
The thing to remember about GAE is that it works differently than a standard python install and apps you have may not work well (or at all) in that environment. The biggest difference is the database. While there are advantages to the non-relational database available with GAE, you need to treat it differently and there are many things that your code may be expecting your database to be able to do that it cannot.
If you are starting from scratch on an app, either platform would work fine. If you have an existing python app, getting it to work on GAE will take considerable work.