У меня есть очередь задач push в приложении Go App Engine. Когда мы пытаемся поставить задачи в очередь на тестирование по какой-либо причине, задачи всегда возвращают 404.
Наш app.yaml:
runtime: go
api_version: go1.9
handlers:
- url: /worker/.*
script: _go_app
login: admin
- url: /.*
script: _go_app
Фактический вызов задачи:
func Handler(w http.ResponseWriter, r *http.Request) {
ctx := appengine.NewContext(r)
t := taskqueue.NewPOSTTask("/worker", map[string][]string{"key": {"val"}})
_, err := taskqueue.Add(ctx, t, "")
if err != nil {
log.Errorf(ctx, "Failed to add task");
}
fmt.Fprintf(w, "Success");
}
Еще неполный обработчик, но он существует!
func Worker(w http.ResponseWriter, r *http.Request) {
ctx := appengine.NewContext(r)
log.Infof(ctx, "Worker succeeded")
}
и, наконец, доказательство того, что мы действительно добавили путь к нашему маршрутизатору:
func init() {
http.HandleFunc("/", Handler)
http.HandleFunc("/worker", Worker)
}
Когда мы на самом деле запускаем тесты, мы всегда получаем следующий вывод журнала:
INFO 2018-05-03 09:51:11,794 module.py:846] default: "POST /worker HTTP/1.1" 404 19
WARNING 2018-05-03 09:51:11,794 taskqueue_stub.py:2149] Task � failed to execute. This task will retry in 0.100 seconds
INFO 2018-05-03 09:51:11,897 module.py:846] default: "POST /worker HTTP/1.1" 404 19
WARNING 2018-05-03 09:51:11,897 taskqueue_stub.py:2149] Task � failed to execute. This task will retry in 0.200 seconds
INFO 2018-05-03 09:51:12,101 module.py:846] default: "POST /worker HTTP/1.1" 404 19
WARNING 2018-05-03 09:51:12,101 taskqueue_stub.py:2149] Task � failed to execute. This task will retry in 0.400 seconds
Обратите внимание, что конечная точка /worker
возвращает 302, когда я пытаюсь пропинговать ее через клиент API, такой как Paw, поэтому маршрут, похоже, настроен правильно. 404 возникает только тогда, когда я пытаюсь запустить что-то в тесте.
Почему это возвращает 404? Я пробовал запускать тесты для примера очереди push в их документации столкнулся с той же проблемой - есть ли какой-то отсутствующий флаг конфигурации, который я не могу передать goapp
?
Я выложил репозиторий GitHub с минимальным воспроизводимым примером здесь
mux
? Как? Пожалуйста, покажите этот код. - person icza   schedule 03.05.2018api_version
должно бытьgo1
, это не версия Go. - person icza   schedule 03.05.2018go1.9
— это поддерживаемыйapi_version
, но в настоящее время он находится на стадии бета-поддержки. См. cloud.google.com/appengine/docs/standard/ перейти/конфигурации/ - person Venantius   schedule 03.05.2018mux
. - person Venantius   schedule 03.05.2018app.yaml
верна. - person Venantius   schedule 03.05.2018login: admin
вapp.yaml
на определенном маршруте. - person Venantius   schedule 06.05.2018