Search code examples
google-app-enginedjango-nonrel

Google App Engine and django-nonrel


I discovered django a while back and have written a couple apps. Then I discovered Google App Engine and am excited to give it a spin especially as it specifically mentions python and django right off the bat.

I confirmed the GAE installation with python 2.7 using GAE hello World app. I then had trouble with the django-nonrel test app. Googling the individual errors subsequently ended out added about 7 different things to the python path until reaching an error that I couldn't solve.

By appearance it seemed that I was off the beaten path somewhat by using windows so I installed a fresh copy of Ubuntu on a VM and started over. Verified python 2.7, put GAE at the recommended location cloned the several packages and symbolically linked them into the provided test app folder. When I ./manage.py runserver It again kicks out the same error messages which put me at an standstill in windows.

My system level take on the problem is that django-nonrel has lost steam by the resignation of its main developers. GAE isn't holding still and there is forming a gap between the two. Is this observation correct? If it is where is the community going? Is it kay? (http://code.google.com/p/kay-framework/ )

Is it using Google's own minimal python frame work? Is it Java instead of python?

I suspect there are thousands of folks doing GAE projects but I am not feeling the well trodden path. Is there very many folks who still have faith in django-nonrel? I realize I could be missing something quite simple like a path var or something but I don't want to keep looking for it if I should be learning something else anyway.


Solution

  • I'm actively using django-nonrel for a project that I've been working on for a few months, but have not yet launched. This past week I've gotten a suggestion from one of the devs CURRENTLY working on django-nonrel to try the latest branch, which is running django 1.4. Note, django 1.4 is not officially available from the GAE SDK. At this point though, it feels like django-nonrel is barging ahead, and the documentation for it has been left in the dust. You'll probably need some development chops to use the latest and greatest.

    django-nonrel may have lost some steam, but I don't think it's dead. One thing to be wary though, is that most of the active developers are using it with mongo-db as a backend. This isn't a problem right now, though I fear potential for fragmentation to a mongo-db version and an appengine version - hopefully this doesn't happen.

    My perception from following the App Engine threads here on SO and on the mailing list, are that the vocal majority is on Java. Of the python users, the common platform is webapp2 + app engine native models + Jinja2 or a similar template library.

    From my experience using django-nonrel:

    Pros:

    • The 3rd party python libraries I wanted worked, and this saved me a lot of time. For example, django-social-auth gave me facebook and twitter logins with barely any work.

    • Gives you the potential ability to switch off of AppEngine to another python+mongo platform.

    Cons:

    • The old release lacks support for ancestor queries, but that's now there on the 1.4 branch.

    • You are your own support. There's a few other very helpful people, but I have had to jump into the codebase to fix issues and add features. I have done this a couple of times (like when the App Engine SDK is released with bugs), but it's been rare.

    • django takes a bit longer to load than say webapp2, but it's not bad if you get rid of everyhing in django.contrib that you're not using.

    • You don't get the ndb goodness. You miss out on the ndb entity caching. However I've found that I'm far more often using queries, which aren't ndb cached, so this may or may not be a big loss.