Go 1.11 telah mencapai akhir dukungan
dan akan
dihentikan penggunaannya
pada 31 Januari 2026. Setelah penghentian penggunaan, Anda tidak akan dapat men-deploy aplikasi Go 1.11, meskipun organisasi Anda sebelumnya menggunakan kebijakan organisasi untuk mengaktifkan kembali deployment runtime lama. Aplikasi Go 1.11 yang ada akan terus berjalan dan menerima traffic setelah
tanggal penghentiannya. Sebaiknya Anda
bermigrasi ke Go versi terbaru yang didukung.
Contoh Task Queue Go
Tetap teratur dengan koleksi
Simpan dan kategorikan konten berdasarkan preferensi Anda.
Contoh ini membuat aplikasi yang menampilkan formulir HTML. Anda memasukkan
string ke dalam kotak dialog dan mengklik Add
. Aplikasi akan menghitung berapa kali Anda
memasukkan string dengan cara ini.
Aplikasi melakukan hal berikut:
- Saat Anda mengklik
Add
, formulir akan menggunakan permintaan POST
HTTP untuk mengirim string
ke aplikasi yang sedang berjalan di App Engine. Di sana, aplikasi akan memaketkan string tersebut
ke dalam tugas dan mengirimkannya ke antrean default.
- Antrean meneruskan tugas ke pengendali tugas yang disertakan, lalu dipetakan ke
/worker
URL, yang secara asinkron menulis string ke datastore.
- Mengirim permintaan
GET
HTTP akan menampilkan daftar string yang
dimasukkan dan berapa kali setiap string di-Add
, baik dengan mengetiknya
maupun dengan mengkliknya di kotak.
Untuk men-deploy aplikasi ini ke App Engine:
Salin kode berikut ke dalam file bernama queue.yaml
. Tindakan ini mengubah tingkat pemrosesan tugas dari default 5 per detik menjadi 3 per detik.
queue:
- name: default
rate: 3/s
Di direktori yang sama, salin kode berikut ke file bernama sesuai keinginan Anda (diakhiri dengan .go
). Ini adalah kode aplikasi, termasuk pengendali tugas.
Di direktori yang sama, salin kode berikut ke file bernama app.yaml
. Tindakan ini akan mengonfigurasi aplikasi Anda untuk App Engine:
Pastikan Anda telah menyiapkan project Google Cloud Platform dengan aplikasi App Engine dan telah melakukan inisialisasi serta mengonfigurasi perintah gcloud
untuk project tersebut.
Gunakan perintah gcloud app deploy
untuk men-deploy aplikasi ke App Engine.
Lihat cara kerja aplikasi dengan menggunakan perintah gcloud app browse
.
Kecuali dinyatakan lain, konten di halaman ini dilisensikan berdasarkan Lisensi Creative Commons Attribution 4.0, sedangkan contoh kode dilisensikan berdasarkan Lisensi Apache 2.0. Untuk mengetahui informasi selengkapnya, lihat Kebijakan Situs Google Developers. Java adalah merek dagang terdaftar dari Oracle dan/atau afiliasinya.
Terakhir diperbarui pada 2025-09-04 UTC.
[[["Mudah dipahami","easyToUnderstand","thumb-up"],["Memecahkan masalah saya","solvedMyProblem","thumb-up"],["Lainnya","otherUp","thumb-up"]],[["Sulit dipahami","hardToUnderstand","thumb-down"],["Informasi atau kode contoh salah","incorrectInformationOrSampleCode","thumb-down"],["Informasi/contoh yang saya butuhkan tidak ada","missingTheInformationSamplesINeed","thumb-down"],["Masalah terjemahan","translationIssue","thumb-down"],["Lainnya","otherDown","thumb-down"]],["Terakhir diperbarui pada 2025-09-04 UTC."],[[["\u003cp\u003eThis application counts and displays the number of times a string is entered via an HTML form.\u003c/p\u003e\n"],["\u003cp\u003eWhen a string is added, it's sent to App Engine via an HTTP POST request, bundled into a task, and added to the default queue.\u003c/p\u003e\n"],["\u003cp\u003eThe task queue forwards the task to a worker handler, which then writes the string to a datastore asynchronously.\u003c/p\u003e\n"],["\u003cp\u003eAn HTTP GET request retrieves and displays a list of the entered strings and their corresponding counts.\u003c/p\u003e\n"],["\u003cp\u003eThe application can be deployed to App Engine using specific configuration files and the \u003ccode\u003egcloud\u003c/code\u003e command-line tool.\u003c/p\u003e\n"]]],[],null,["# A Go Task Queue Example\n\nThis example creates an app that displays an HTML form. You enter\na string into the dialog box and click `Add`. The app counts the number of times\nthat you enter any string in this way.\n\nThe app does these things:\n\n- When you click `Add`, the form uses an HTTP `POST`request to send the string to the app which is running on App Engine. There the app bundles the string into a task and sends it to the default queue.\n- The queue forwards the task to an included task handler, mapped to the URL `/worker`, which asynchronously writes the string to a datastore.\n- Sending an HTTP `GET` request displays a list of the strings you have entered and the number of times you have`Add`ed each string, either by typing it or by clicking on it in the dropdown box.\n\nTo deploy this app to App Engine:\n\n1. Copy the following into a file named `queue.yaml`. This changes the rate at\n which tasks will be processed from the default 5 per second to 3 per second.\n\n queue:\n - name: default\n rate: 3/s\n\n2. In the same directory, copy the following into a file named as you like (ending in `.go`). This is the application code, including the task handler.\n\n\n package counter\n\n import (\n \t\"html/template\"\n \t\"net/http\"\n\n \t\"google.golang.org/appengine\"\n \t\"google.golang.org/appengine/datastore\"\n \t\"google.golang.org/appengine/log\"\n \t\"google.golang.org/appengine/taskqueue\"\n )\n\n func init() {\n \thttp.HandleFunc(\"/\", handler)\n \thttp.HandleFunc(\"/worker\", worker)\n }\n\n type Counter struct {\n \tName string\n \tCount int\n }\n\n func handler(w http.ResponseWriter, r *http.Request) {\n \tctx := appengine.NewContext(r)\n \tif name := r.FormValue(\"name\"); name != \"\" {\n \t\tt := taskqueue.NewPOSTTask(\"/worker\", map[string][]string{\"name\": {name}})\n \t\tif _, err := taskqueue.Add(ctx, t, \"\"); err != nil {\n \t\t\thttp.Error(w, err.Error(), http.StatusInternalServerError)\n \t\t\treturn\n \t\t}\n \t}\n \tq := datastore.NewQuery(\"Counter\")\n \tvar counters []Counter\n \tif _, err := q.GetAll(ctx, &counters); err != nil {\n \t\thttp.Error(w, err.Error(), http.StatusInternalServerError)\n \t\treturn\n \t}\n \tif err := handlerTemplate.Execute(w, counters); err != nil {\n \t\thttp.Error(w, err.Error(), http.StatusInternalServerError)\n \t\treturn\n \t}\n \t// OK\n }\n\n func worker(w http.ResponseWriter, r *http.Request) {\n \tctx := appengine.NewContext(r)\n \tname := r.FormValue(\"name\")\n \tkey := datastore.NewKey(ctx, \"Counter\", name, 0, nil)\n \tvar counter Counter\n \tif err := datastore.https://cloud.google.com/appengine/docs/legacy/standard/go111/reference/latest/datastore.html#google_golang_org_appengine_datastore_Get(ctx, key, &counter); err == datastore.https://cloud.google.com/appengine/docs/legacy/standard/go111/reference/latest/datastore.html#google_golang_org_appengine_datastore_ErrInvalidEntityType_ErrInvalidKey_ErrNoSuchEntity {\n \t\tcounter.Name = name\n \t} else if err != nil {\n \t\tlog.https://cloud.google.com/appengine/docs/legacy/standard/go111/reference/latest/log.html#google_golang_org_appengine_log_Errorf(ctx, \"%v\", err)\n \t\treturn\n \t}\n \tcounter.Count++\n \tif _, err := datastore.Put(ctx, key, &counter); err != nil {\n \t\tlog.https://cloud.google.com/appengine/docs/legacy/standard/go111/reference/latest/log.html#google_golang_org_appengine_log_Errorf(ctx, \"%v\", err)\n \t}\n }\n\n var handlerTemplate = template.Must(template.New(\"handler\").Parse(handlerHTML))\n\n const handlerHTML = `\n {{range .}}\n \u003cp\u003e{{.Name}}: {{.Count}}\u003c/p\u003e\n {{end}}\n \u003cp\u003eStart a new counter:\u003c/p\u003e\n \u003cform action=\"/\" method=\"POST\"\u003e\n \u003cinput type=\"text\" name=\"name\"\u003e\n \u003cinput type=\"submit\" value=\"Add\"\u003e\n \u003c/form\u003e\n `\n\n3. In the same directory, copy the following into a file named `app.yaml`. This configures your\n application for App Engine:\n\n runtime: go\n api_version: go1\n\n handlers:\n - url: /worker/.*\n script: _go_app\n login: admin\n - url: /.*\n script: _go_app\n\n4. Make sure you have a [Google Cloud Platform project with an App Engine app](/appengine/docs/legacy/standard/go111/console)\n prepared and that you have [initialized](/sdk/docs/initializing) and\n configured the `gcloud` command for that project.\n\n5. Use the `gcloud app deploy` command to deploy the app to App Engine.\n\n6. See the app in action by using the `gcloud app browse` command."]]