]>
Commit | Line | Data |
---|---|---|
107c1cdb ND |
1 | # Go App Engine packages |
2 | ||
3 | [![Build Status](https://travis-ci.org/golang/appengine.svg)](https://travis-ci.org/golang/appengine) | |
4 | ||
5 | This repository supports the Go runtime on *App Engine standard*. | |
6 | It provides APIs for interacting with App Engine services. | |
7 | Its canonical import path is `google.golang.org/appengine`. | |
8 | ||
9 | See https://cloud.google.com/appengine/docs/go/ | |
10 | for more information. | |
11 | ||
12 | File issue reports and feature requests on the [GitHub's issue | |
13 | tracker](https://github.com/golang/appengine/issues). | |
14 | ||
15 | ## Upgrading an App Engine app to the flexible environment | |
16 | ||
17 | This package does not work on *App Engine flexible*. | |
18 | ||
19 | There are many differences between the App Engine standard environment and | |
20 | the flexible environment. | |
21 | ||
22 | See the [documentation on upgrading to the flexible environment](https://cloud.google.com/appengine/docs/flexible/go/upgrading). | |
23 | ||
24 | ## Directory structure | |
25 | ||
26 | The top level directory of this repository is the `appengine` package. It | |
27 | contains the | |
28 | basic APIs (e.g. `appengine.NewContext`) that apply across APIs. Specific API | |
29 | packages are in subdirectories (e.g. `datastore`). | |
30 | ||
31 | There is an `internal` subdirectory that contains service protocol buffers, | |
32 | plus packages required for connectivity to make API calls. App Engine apps | |
33 | should not directly import any package under `internal`. | |
34 | ||
35 | ## Updating from legacy (`import "appengine"`) packages | |
36 | ||
37 | If you're currently using the bare `appengine` packages | |
38 | (that is, not these ones, imported via `google.golang.org/appengine`), | |
39 | then you can use the `aefix` tool to help automate an upgrade to these packages. | |
40 | ||
41 | Run `go get google.golang.org/appengine/cmd/aefix` to install it. | |
42 | ||
43 | ### 1. Update import paths | |
44 | ||
45 | The import paths for App Engine packages are now fully qualified, based at `google.golang.org/appengine`. | |
46 | You will need to update your code to use import paths starting with that; for instance, | |
47 | code importing `appengine/datastore` will now need to import `google.golang.org/appengine/datastore`. | |
48 | ||
49 | ### 2. Update code using deprecated, removed or modified APIs | |
50 | ||
51 | Most App Engine services are available with exactly the same API. | |
52 | A few APIs were cleaned up, and there are some differences: | |
53 | ||
54 | * `appengine.Context` has been replaced with the `Context` type from `golang.org/x/net/context`. | |
55 | * Logging methods that were on `appengine.Context` are now functions in `google.golang.org/appengine/log`. | |
56 | * `appengine.Timeout` has been removed. Use `context.WithTimeout` instead. | |
57 | * `appengine.Datacenter` now takes a `context.Context` argument. | |
58 | * `datastore.PropertyLoadSaver` has been simplified to use slices in place of channels. | |
59 | * `delay.Call` now returns an error. | |
60 | * `search.FieldLoadSaver` now handles document metadata. | |
61 | * `urlfetch.Transport` no longer has a Deadline field; set a deadline on the | |
62 | `context.Context` instead. | |
63 | * `aetest` no longer declares its own Context type, and uses the standard one instead. | |
64 | * `taskqueue.QueueStats` no longer takes a maxTasks argument. That argument has been | |
65 | deprecated and unused for a long time. | |
66 | * `appengine.BackendHostname` and `appengine.BackendInstance` were for the deprecated backends feature. | |
67 | Use `appengine.ModuleHostname`and `appengine.ModuleName` instead. | |
68 | * Most of `appengine/file` and parts of `appengine/blobstore` are deprecated. | |
69 | Use [Google Cloud Storage](https://godoc.org/cloud.google.com/go/storage) if the | |
70 | feature you require is not present in the new | |
71 | [blobstore package](https://google.golang.org/appengine/blobstore). | |
72 | * `appengine/socket` is not required on App Engine flexible environment / Managed VMs. | |
73 | Use the standard `net` package instead. |