• Stars
    star
    669
  • Rank 67,451 (Top 2 %)
  • Language
    Go
  • License
    Apache License 2.0
  • Created almost 11 years ago
  • Updated about 1 month ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Go App Engine packages

Go App Engine packages

CI Status

This repository supports the Go runtime on App Engine standard. It provides APIs for interacting with App Engine services. Its canonical import path is google.golang.org/appengine.

See https://cloud.google.com/appengine/docs/go/ for more information.

File issue reports and feature requests on the GitHub's issue tracker.

Upgrading an App Engine app to the flexible environment

This package does not work on App Engine flexible.

There are many differences between the App Engine standard environment and the flexible environment.

See the documentation on upgrading to the flexible environment.

Directory structure

The top level directory of this repository is the appengine package. It contains the basic APIs (e.g. appengine.NewContext) that apply across APIs. Specific API packages are in subdirectories (e.g. datastore).

There is an internal subdirectory that contains service protocol buffers, plus packages required for connectivity to make API calls. App Engine apps should not directly import any package under internal.

Updating from legacy (import "appengine") packages

If you're currently using the bare appengine packages (that is, not these ones, imported via google.golang.org/appengine), then you can use the aefix tool to help automate an upgrade to these packages.

Run go get google.golang.org/appengine/cmd/aefix to install it.

1. Update import paths

The import paths for App Engine packages are now fully qualified, based at google.golang.org/appengine. You will need to update your code to use import paths starting with that; for instance, code importing appengine/datastore will now need to import google.golang.org/appengine/datastore.

2. Update code using deprecated, removed or modified APIs

Most App Engine services are available with exactly the same API. A few APIs were cleaned up, and there are some differences:

  • appengine.Context has been replaced with the Context type from context.
  • Logging methods that were on appengine.Context are now functions in google.golang.org/appengine/log.
  • appengine.Timeout has been removed. Use context.WithTimeout instead.
  • appengine.Datacenter now takes a context.Context argument.
  • datastore.PropertyLoadSaver has been simplified to use slices in place of channels.
  • delay.Call now returns an error.
  • search.FieldLoadSaver now handles document metadata.
  • urlfetch.Transport no longer has a Deadline field; set a deadline on the context.Context instead.
  • aetest no longer declares its own Context type, and uses the standard one instead.
  • taskqueue.QueueStats no longer takes a maxTasks argument. That argument has been deprecated and unused for a long time.
  • appengine.BackendHostname and appengine.BackendInstance were for the deprecated backends feature. Use appengine.ModuleHostnameand appengine.ModuleName instead.
  • Most of appengine/file and parts of appengine/blobstore are deprecated. Use Google Cloud Storage if the feature you require is not present in the new blobstore package.
  • appengine/socket is not required on App Engine flexible environment / Managed VMs. Use the standard net package instead.

Key Encode/Decode compatibility to help with datastore library migrations

Key compatibility updates have been added to help customers transition from google.golang.org/appengine/datastore to cloud.google.com/go/datastore. The EnableKeyConversion enables automatic conversion from a key encoded with cloud.google.com/go/datastore to google.golang.org/appengine/datastore key type.

Enabling key conversion

Enable key conversion by calling EnableKeyConversion(ctx) in the /_ah/start handler for basic and manual scaling or any handler in automatic scaling.

1. Basic or manual scaling

This start handler will enable key conversion for all handlers in the service.

http.HandleFunc("/_ah/start", func(w http.ResponseWriter, r *http.Request) {
    datastore.EnableKeyConversion(appengine.NewContext(r))
})

2. Automatic scaling

/_ah/start is not supported for automatic scaling and /_ah/warmup is not guaranteed to run, so you must call datastore.EnableKeyConversion(appengine.NewContext(r)) before you use code that needs key conversion.

You may want to add this to each of your handlers, or introduce middleware where it's called. EnableKeyConversion is safe for concurrent use. Any call to it after the first is ignored.

More Repositories

1

go

The Go programming language
Go
121,832
star
2

groupcache

groupcache is a caching and cache-filling library, intended as a replacement for memcached in many cases.
Go
12,859
star
3

dep

Go dependency management tool experiment (deprecated)
Go
12,857
star
4

protobuf

Go support for Google's protocol buffers
Go
9,676
star
5

mock

GoMock is a mocking framework for the Go programming language.
Go
9,286
star
6

tools

[mirror] Go Tools
Go
7,321
star
7

mobile

[mirror] Go on Mobile
Go
5,768
star
8

oauth2

Go OAuth2
Go
5,270
star
9

lint

[mirror] This is a linter for Go source code. (deprecated)
Go
3,974
star
10

vscode-go

Go extension for Visual Studio Code
TypeScript
3,810
star
11

glog

Leveled execution logs for Go
Go
3,520
star
12

proposal

Go Project Design Documents
Go
3,312
star
13

crypto

[mirror] Go supplementary cryptography libraries
Go
2,982
star
14

net

[mirror] Go supplementary network libraries
Go
2,846
star
15

example

Go example projects
Go
2,526
star
16

geo

S2 geometry library in Go
Go
1,655
star
17

tour

[mirror] A Tour of Go
Go
1,543
star
18

vgo

[mirror] Versioned Go Prototype
Go
1,519
star
19

snappy

The Snappy compression format in the Go programming language.
Go
1,512
star
20

sys

[mirror] Go packages for low-level interaction with the operating system
Go
1,253
star
21

pkgsite

[mirror] Home of the pkg.go.dev website
Go
1,148
star
22

leveldb

The LevelDB key-value database in the Go programming language.
Go
1,145
star
23

gddo

Go Doc Dot Org
Go
1,104
star
24

gofrontend

Go compiler frontend (gccgo)
Go
852
star
25

sync

[mirror] concurrency primitives
Go
848
star
26

exp

[mirror] Experimental and deprecated packages
Go
838
star
27

freetype

The Freetype font rasterizer in the Go programming language.
Go
783
star
28

text

[mirror] Go text processing support
Go
745
star
29

playground

[mirror] The Go Playground
Go
741
star
30

talks

Go talks
694
star
31

build

[mirror] Go's continuous build and release infrastructure (no stability promises)
Go
627
star
32

vulndb

[mirror] The Go Vulnerability Database
Go
555
star
33

image

[mirror] Go supplementary image libraries
Go
522
star
34

blog

[mirror] Go Blog (obsolete)
389
star
35

time

[mirror] Go supplementary time packages
Go
383
star
36

vuln

[mirror] the database client and tools for the Go vulnerability database
Go
376
star
37

perf

[mirror] Performance measurement, storage, and analysis.
Go
375
star
38

website

[mirror] Home of the go.dev and golang.org websites
HTML
373
star
39

sublime-build

The official Sublime Text package for Go build system integration.
Python
343
star
40

xerrors

Go
277
star
41

term

Go terminal and console support
Go
272
star
42

debug

[mirror] debugging tools
Go
230
star
43

dl

[mirror] go install golang.org/dl/go1.N@latest
Go
189
star
44

mod

[mirror] Go module mechanics libraries
Go
187
star
45

benchmarks

Benchmarks for the perf dashboard
Go
181
star
46

arch

[mirror] architecture code
Go
145
star
47

review

[mirror] Tool for working with Gerrit code reviews
Go
143
star
48

cwg

Community outreach Working Group
132
star
49

oscar

[mirror] Open source contributor agent architecture repo.
Go
90
star
50

govulncheck-action

[mirror] GitHub action for govulncheck
89
star
51

sublime-config

A library for Go environment configuration in Sublime Text
Python
85
star
52

winstrap

Bootstrapping tools for windows builders
Go
48
star
53

telemetry

[mirror] Go Telemetry services and libraries
Go
36
star
54

wiki

[mirror] Go Wiki
29
star
55

scratch

[mirror] repository used for testing
Go
28
star
56

pkgsite-metrics

Code to serve pkg.go.dev/metrics [mirror]
Go
13
star
57

go-get-issue-15410

go-get-issue-15410
Go
4
star
58

.github

2
star
59

.allstar

2
star