Links
- Quotas
- Billing / Pricing
- Push to deploy
- Only for Python and PHP apps.
- Using Git and Push-to-Deploy
- Enable at
https://cloud.google.com/console#/project/
APP-ID/clouddev/ptd
- backends.yaml
- app.yaml
- Python Docs
- Response headers
- The Environment
Name Description CURRENT_VERSION_ID The major and minor version of the currently running application, as "X.Y". The major version number ("X") is specified in the app's app.yaml file. The minor version number ("Y") is set automatically when each version of the app is uploaded to App Engine. On the development web server, the minor version is always "1". AUTH_DOMAIN The domain used for authenticating users with the Users API. Apps hosted on appspot.com have an AUTH_DOMAIN of gmail.com, and accept any Google account. Apps hosted on a custom domain using Google Apps have an AUTH_DOMAIN equal to the custom domain. INSTANCE_ID Contains the instance ID of the frontend instance handling a request. The ID is a hex string (for example, 00c61b117c7f7fd0ce9e1325a04b8f0df30deaaf). A logged-in admin can use the id in a url: http://[INSTANCE_ID].myApp.appspot.com/. The request will be routed to that specific frontend instance. If the instance cannot handle the request it returns an immediate 503. SERVER_SOFTWARE In the development web server, this value is "Development/X.Y" where "X.Y" is the version of the runtime. When running on App Engine, this value is "Google App Engine/X.Y.Z". - Datastore
- Services
- URL fetch service
- Py27: background thread
- App Identity Functions
- Datastore
- Asynchronous urlfetch requests
- Background work with the deferred library
- remote_api
- Search API
- Appstats
- You must install the event recorder
- Libraries
- Python 2.7
- Migrating to the High Replication Datastore
- Traffic Splitting
- Source Code
- code.google.com/p/googleappengine
- appcfg.py
- dev_appserver.py
- Calls dev_appserver_main.py
- Refer command line flags such as
--allow_skipped_files
,--debug
, etc.
- Refer command line flags such as
- Calls dev_appserver_main.py
- appengine_rpc_httplib2.py
- python/lib (third party libs)
- ProtoRPC
- Google Cloud Endpoints
- Cron
- Logging
- Performance / PageSpeed
- Optimizing
- Try to see if zipimportx works on appengine.
- Code
- SDK
- Code + Data Limits
- See https://developers.google.com/appengine/docs/quotas#Deployments
- 10,000 uploaded files, each up to 32Mb,
- Total size of all files across all versions under 1Gb.
- 10,000 app deploys per day.
- Guido's comment from 2009
- 150 MB max combined size of code files.
- 10 MB max individual size of any file.
- 1000 files max per directory (not counting files in subdirectories).
- FYI: static files are also referred to as blobs.
- See https://developers.google.com/appengine/docs/quotas#Deployments
- Code + Data Limits
More Stuff
- fuse-gae
- FUSE filesystem for blobstore
Pipeline API for AppEngine
http://appengine-pipeline.googlecode.com/
http://mapreduce.appspot.com/
http://onebigfluke.com/
Adding in XSRF protection
From http://stackoverflow.com/questions/8384729/is-there-any-available-solution-to-provide-xsrf-csrf-support-for-google-app-engi/8545183#8545183
See also: https://docs.djangoproject.com/en/dev/ref/contrib/csrf/
def init_csrf(self): """Issue and handle CSRF token as necessary""" self.csrf_token = self.request.cookies.get('c') if not self.csrf_token: self.csrf_token = str(uuid4())[:8] self.set_cookie('c', self.csrf_token) if self.request.method == 'POST' and self.csrf_protect \ and self.csrf_token != self.request.get('_csrf_token'): raise CsrfException('Missing or invalid CSRF token.')