Я пишу простую программу App Engine, используя Go.Мне нужно записать некоторые данные в Google DataStore.Программа постоянно зависает, когда я пытаюсь. Поместить данные в хранилище.Это потрясло меня всю эту неделю.
В какой-то момент мне удалось записать данные в DataStore, что я понял только тогда, когда обнаружил, как просматривать загруженные данные в Cloud Console.С тех пор я сильно изменил код, и теперь я больше не могу писать какие-либо данные.Он зависает каждый раз.
Логи ничего полезного не показывают.Только уведомление о том, что время процесса истекло.Журналы не записываются из программы, только из системы.
Процесс прерван из-за превышения срока запроса.(Код ошибки 123)
Я пытался изменить операторы импорта, используя эту ссылку , но не удалось скомпилировать, поэтому я вернулся к этой ссылке который компилируется без проблем.
Я рассмотрел возможность того, что я каким-то образом неправильно настроил (возможно, изуродовал?) мою среду разработки, поэтому я пошел на чистую машину и тщательно прошел новую установку.Он все еще зависает.
Мой файл app.yaml:
runtime: go
api_version: go1
handlers:
- url: /.*
script: _go_app
Файл index.yaml, который я добавил:
indexes:
- kind: Bacon
properties:
- name: YCode
direction: asc
- name: URL
- name: Owner
- name: Location
Вот мой код:
package main
import (
"fmt"
"log"
"net/http"
"google.golang.org/appengine/datastore"
"google.golang.org/appengine"
)
type Bacon struct {
YCode string
URL string
Owner string
Location string
}
func main() {
http.HandleFunc("/", indexHandler)
appengine.Main()
}
func indexHandler(w http.ResponseWriter, r *http.Request) {
ctx := appengine.NewContext(r)
projectID := "fake-for-discussion-thread-787987"
client, err := datastore.NewClient(ctx, projectID)
if err != nil {
log.Fatalf("Failed to create client: %v", err)
return
}
kind := "Bacon"
name := "3"
baconKey := datastore.NameKey(kind, name, nil)
//Make bacon
bacon := Bacon{
YCode: "1",
URL: "http://www.safeway.com",
Owner: "Bob",
Location: "Deli",
}
// I've confirmed that this is where it hangs every time.
// It doesn't even capture my silly fatal log entry.
// It just times out and finally sends a 500 Server Error.
if _, err := client.Put(ctx, baconKey, &bacon); err != nil {
log.Fatalf("Failed to save my Bacon: %v", err)
}
client.Close()
}
Большое спасибо за любую помощь, которую вы можете предложить!