google app engine for python - unit01: basic

18
Google App Engine (GAE) Wei-Tsung Su ( 蘇蘇蘇 ) [email protected] 06/30/2014 (Ver. 1.0) Ubiquitous Computing and Ambient Networking Laboratory 1

Upload: ellington-su

Post on 08-May-2015

432 views

Category:

Technology


6 download

DESCRIPTION

1. Introduction to Google App Engine (GAE) 2. GAE for Python 3. Using Static Files in GAE 4. Using Google User Service in GAE

TRANSCRIPT

Page 1: Google App Engine for Python - Unit01: Basic

Ubiquitous Computing and Ambient Networking Laboratory 1

Google App Engine (GAE)

Wei-Tsung Su (蘇維宗 )

[email protected]

06/30/2014 (Ver. 1.0)

Page 2: Google App Engine for Python - Unit01: Basic

Ubiquitous Computing and Ambient Networking Laboratory 2

Change LogDate Ver. Authors Description

6/30/2014 1.0 Wei-Tsung Su Google App Engine (GAE); GAE for Python; Using Static Files; Google User Service

Page 3: Google App Engine for Python - Unit01: Basic

What?

• Google Cloud Platform– App Engine provides Platform as a Service (PaaS)– Compute Engine provides Infrastrcture as a Servce (IaaS)– CloudSQL, Cloud Storage, and Cloud Datastore provide storage options– BigQuery and Hadoop provide big data processing capability

• Language supported by GAE– Python, Java, PHP, and GO– Different languages may provide different features.

Ubiquitous Computing and Ambient Networking Laboratory 3

Page 4: Google App Engine for Python - Unit01: Basic

Why?

• Easily deploy your web services to public

• Seamlessly integrate with other Google services

• Free quotas (https://developers.google.com/appengine/docs/quotas) – Code & Static Data Store (1GB free)– Google Cloud Storage (5GB free) – Blobstore Stored Data (5GB free) – API access (which depends on different Google API)– ...

Ubiquitous Computing and Ambient Networking Laboratory 4

Page 5: Google App Engine for Python - Unit01: Basic

How?

• Read Support Documentation– https://developers.google.com/appengine/

• Try Administration Console– https://appengine.google.com/– https://console.developers.google.com

• Download SDK– https://developers.google.com/appengine/downloads

Start Your Engine 3, 2, 1

Ubiquitous Computing and Ambient Networking Laboratory 5

Page 6: Google App Engine for Python - Unit01: Basic

Ubiquitous Computing and Ambient Networking Laboratory 6

GAE for Python

Page 7: Google App Engine for Python - Unit01: Basic

Ubiquitous Computing and Ambient Networking Laboratory 7

Setup Development Environment

• Install Python 2.7– https://www.python.org/download/releases/2.7.7/

• Install App Engine SDK for Python– https://developers.google.com/appengine/downloads– Ex. we assume that google_appengine/ is the SDK directory.

• Install Git (optional)– http://git-scm.com/downloads

Page 8: Google App Engine for Python - Unit01: Basic

Ubiquitous Computing and Ambient Networking Laboratory 8

How GAE for Python Works

• A Python web app interacts with the App Engine web server using Web Server Gateway Interface (WSGI) protocol.

• WSGI-compatible web application frameworks, such as– webapp2 (by default, simple)– Django– CherryPy– Pylons– web.py– web2py

Page 9: Google App Engine for Python - Unit01: Basic

Ubiquitous Computing and Ambient Networking Laboratory 9

Project Structure of GAE for Python

• Modules– Dynamic web page generation– http://webapp-improved.appspot.com/ – Filename: xxx.py (ex. helloword.py)

• Configuration File– Project configuration– Routing requests to modules– https://developers.google.com/appengine/docs/python/config/appconfig– Filename: app.yaml (壓謀 !)

• Ex. we assume that helloworld/ is the project directory

Page 10: Google App Engine for Python - Unit01: Basic

Ubiquitous Computing and Ambient Networking Laboratory 10

Module: helloworld. py• import webapp2

class MainPage(webapp2.RequestHandler): def get(self): self.response.headers['Content-Type'] = 'text/ html' self.response.write('Hello, World!')

app = webapp2.WSGIApplication([ ('/', MainPage),], debug=True)

• For security issue, you should disable debug which will display a stack trace in the browser when a handler raises an exception.

Page 11: Google App Engine for Python - Unit01: Basic

Ubiquitous Computing and Ambient Networking Laboratory 11

Configuration File: app.yaml• application: your-app-idversion: 1runtime: python27api_version: 1threadsafe: true

handlers:- url: /.* script: helloworld.app

• How to test your project locally– # google_appengine/dev_appserver.py helloworld/– Test your web app by visiting the URL: http://localhost:8080

Page 12: Google App Engine for Python - Unit01: Basic

Hello, World!

Ubiquitous Computing and Ambient Networking Laboratory 12

Page 13: Google App Engine for Python - Unit01: Basic

Ubiquitous Computing and Ambient Networking Laboratory 13

Using Static Files

• Sometimes, you may put static files, such images, CSS stylesheets, JavaScript code, and so on, into your web applications.

• For example, – <img src="/images/logo.png" >

• Unfortunately, you cannot just create a directory and put thestatic files into the directory.

• You also need to add route intocon figuration file: app.yaml– - url: /images static_dir: images

Page 14: Google App Engine for Python - Unit01: Basic

Ubiquitous Computing and Ambient Networking Laboratory 14

Google User Service• Google user service (https://developers.google.com/appengine/docs/python/users/)• Import user service module

– from google.appengine.api import users

• Get current user– user = users.get_current_user() # Google Account, Google Apps Account, OpenID

• Access user information– user.nickname() – user.email() – user.user_id()

• Administrator check– user.is_current_user_admin()

• Create login/logout pages– users.create_login_url('[destination URL]')– users.create_logout_url('[destination URL]')

Page 15: Google App Engine for Python - Unit01: Basic

Ubiquitous Computing and Ambient Networking Laboratory 15

Google User Service - Example• from google.appengine.api import users

import webapp2

class MainPage(webapp2.RequestHandler): def get(self): user = users.get_current_user() if user: self.response.headers['Content-Type'] = 'text/ html' self.response.write('Hello, World, %s!<br>', %(user.nickname())) self.response.write('<a href="%s">Sign Out</a>' % users.create_logout_url(self.request.url)) else: self.redirect(users.create_login_url(self.request.url) )

app = webapp2.WSGIApplication([ ('/', MainPage), ], debug=True)

Page 16: Google App Engine for Python - Unit01: Basic

Hello, World, User!

Ubiquitous Computing and Ambient Networking Laboratory 16

Page 17: Google App Engine for Python - Unit01: Basic

Deploy Your Application

• Step 1: Create Project in Developer Console– https://console.developers.google.com– You will get a random project id (Ex. your-app-id).– The public URL of your web application will be

• http://your-app-id.appspot.com

• Step 2: Check if the application ID in app.yaml matches your-app-id– application: your-app-id

• Step 3: Deploy your local project– #google_appengine/appcfg.py update helloworld/– Test your web app by visiting the URL: http://your-app-id.appspot.com

Ubiquitous Computing and Ambient Networking Laboratory 17

Page 18: Google App Engine for Python - Unit01: Basic

Q&A

You can clone the sample code bygit clone https://github.com/ucanlab/gae_python_basic_helloworld.git

or visiting https://github.com/ucanlab/gae_python_basic_helloworld

Ubiquitous Computing and Ambient Networking Laboratory 18