A lot of work I want to do involves long-running processes that I want to run on a hosted environment and provide a web interface for users to see the results of the long-running jobs.
I believe Google App Engine with its "modules" feature (https://cloud.google.com/appengine/docs/java/modules/) is a great service for this but I have been struggling to figure out how to set it up for this purpose (see App Engine Modules with GWT, Possible to use Google Modules with Google Plugin for Eclipse?, How use Eclipse to develop Google Modules for Google Cloud?). Someone may have been trying to do the same thing (see: how to create gwt gae with app engine modules using google eclipse plugin) but there's no accepted answer and I'm looking for a more comprehensive set of instructions.
Could someone provide a step-by-step set of instructions to set up the following Hello World project involving the following project architecture?
Requirements
- User visits web page and types in a job name, e.g. "Hello World" and their email address where they will receive the results.
- Google App Engine then performs a long-running computation (e.g. 10 hours, i.e. much longer than the 10 minute time limit for a module of Scaling Type "Automatic" as described here https://cloud.google.com/appengine/docs/java/modules/).
- Google App Engine then sends an email to the user stating that the "Hello World" computation is finished and provides the result in the body of the email message.
Project Architecture
- Web front-end (ideally GWT but propose any suitable alternative since it may be a problem as described here: App Engine Modules with GWT)
- Module 1 (Scaling Type = Automatic): Responds to web front-end requests by putting a job on a Google Task Queue with the name provided by the user. The email address is recorded in the Google Datastore with a primary key equal to the job name (the purpose is I want to see how to make two modules share the same datastore; it's alluded to here: Serving multiple GAE modules from one development server? but I'd like to see more detail).
- Module 2 (Scaling Type = Basic Scaling): Picks up the job from the Google Task Queue, performs the long-running computation, and emails the result. Note the email address is obtained by looking it up in the datastore using the job name.
Development Environment
- Google App Engine
- Java
- Google Modules (https://cloud.google.com/appengine/docs/java/modules/)
- Google Task Queues (https://cloud.google.com/appengine/docs/java/config/queue)
- GWT
- Google Data Store (https://cloud.google.com/datastore/)
- Eclipse (Juno)
- Maven (via m2Eclipse plugin)
- Mac