Django on Google App Engine plus Cloud SQL

June 8, 2012

Today I have successfully migrated this blog to Google App Engine (GAE) with only a change in the database settings by exploiting the new Google Cloud SQL.

Here are the steps I did:

  1. I followed this guide to setup my database in Google Cloud SQL.
  2. I uploaded the database backup file to Google Cloud Storage to be able to import it to Could SQL.
  3. I created another app in GAE to serve my static files, then modified my STATIC_URL setting. Before deploying files, I ran django-staticfiles command "collectstatic" locally to collect my static files from my Django app.
  4. To deploy the environment applications, I created a symlink to the site-packages into the project folder and added this in the settings:
    if not DEBUG:
        sys.path.insert(0, os.path.join(PROJECT_DIR, "env"))
  5. To minimize cost, I modified the code to use GAE Memcache as described here.

Problems I encountered:

  1. I noticed that django comment app isn't working. Will update this blog once I got it working. If you need to comment on this blog, please email me instead until I fix this problem.
  2. I'm still trying to figure out how use Django model's FileField. I read some articles mentioning Google Cloud Storage but I wonder how would the native django code could do that.
  3. The application cannot send email alerts when error is triggered.
  4. The application loads slow because of the delay in loading the static files and starting the database instance from Cloud SQL.
  5. I cannot use Django South to manage changes in the database structure.

Update (2012-06-12): I eventually moved this blog site to Amazon EC2 using a micro reserved instance. The price is only $0.008/hour as compared to Google Cloud SQL which is $0.1/hour. This also gives me flexibility and freedom on how will I deploy the static files and use python-virtualenv.