views:

540

answers:

2

I see google provide SDK and utilties to develop and run the web application in development (developer-pc) and port them to google app engine live (at google server).

Can we use google app engine to run the local web application without using google infrastructure?

Basically I want a decent job scheduler and persistent job queue for python (I am not using google infrastructure). I see google provides task queue implementation along with their app engine sdk.

Can I use google app engine SDK to development my full fledged python application for task queue?

A: 

I don't believe so. According to the App Engine terms of service:

7.1. Google gives you a personal, worldwide, royalty-free, non-assignable and non-exclusive license to use the software provided to you by Google as part of the Service as provided to you by Google (referred to as the "Google App Engine Software" below). This license is for the sole purpose of enabling you to use and enjoy the benefit of the Service as provided by Google, in the manner permitted by the Terms.

(emphasis mine)

You'd want to check with a lawyer, but to me this sounds like the dev_appserver.py server is only to be used for development of applications which are then deployed to the GAE "service", not for running your own servers internally.

I also suspect that running a production service off dev_appserver.py would be inadvisable for performance reasons. Without special effort, threaded Python web servers can generally only accomodate one request at a time, which limits your performance and scalability. This is due to an implementation detail of CPython, called the GIL. See http://docs.python.org/c-api/init.html#thread-state-and-the-global-interpreter-lock for a detailed explanation.

dcrosta
Per http://code.google.com/p/googleappengine/ the SDK uses the Apache License 2.0 and therefore is **MUCH** more permissive than you appear to think. Running production servers off that code would be silly, but making your own servers reusing chunks thereoff is just fine, and that's what appscale is doing (with the New BSD License in their case, **also** an extremely permissive and liberal open-source license, like Apache's).
Alex Martelli
This is definitely not the case. You don't have to agree to the TOS in order to download or use the SDK - the Terms of Service apply solely to hosting your app on appspot. Your point about performance is accurate, however.
Nick Johnson
Ah, I see I misread -- "This license is for the sole purpose..." not "[The SDK and development tools are] for the sole purpose"
dcrosta
Google has a recidivistic problem publishing restrictive terms of service that appear to contradict open-source licenses of software they release. I hope they can fix this soon.
Kragen Javier Sitaker
+9  A: 

You can run App Engine apps on top of appscale which in turn does run on Eucalyptus, Xen, and other clustering solutions you can deploy on Ubuntu (not sure about there being any Windows support) -- looks like it may require substantial system installation, configuration, and administration work to get started (sorry, no first-hand experience yet), but once you've done that investment it appears it may be smoother going forwards. (Automation of task queues is a relatively recent addition to appscale, but it's apparently working and can be patched in from a bazaar branch until it gets fully integrated into the trunk of the appscale project).

Edit: since there seems to be some confusion about licensing of this code, I'll point out that the App Engine SDK, as per its site, is under Apache License 2.0, and appscale's under the New BSD License. Both are extremely permissive and liberal open-source licenses that basically allow you all sorts of reuses, remixes, mashups, redistributions, etc, etc.

Edit: Nick also suggests mentioning TwistedAE, another effort to build an open source way (also Apache License 2.0) to deploy App Engine apps on your own infrastructure; I have no direct experience with it, and it IS still pre-alpha, but it does seem very promising and well worth keeping an eye on (tx Nick!).

Alex Martelli
Might also want to mention TwistedAE, another effort to develop an alternate App Engine stack; it supports task queues via RabbitMQ.
Nick Johnson
@Nick tx, edited the answer to add TwistedAE's URL.
Alex Martelli