Цель задания Cron Google App Engine не использует правильный URL

#python-3.x #google-app-engine #service #cron #yaml

# #python-3.x #google-app-engine #Обслуживание #cron #yaml

Вопрос:

У меня проблема с получением задания cron для правильного таргетинга на определенную службу в стандарте Google App Engine для приложения Python. Я могу успешно создать задание cron для приложения python в Google App Engine (стандартном) с помощью файла app.yaml и cron.файл yaml. Служба не определена и является службой по умолчанию. cron.yaml не указывает цель. Если я установлю для имени службы в файле app.yaml значение service1, URL-адрес приложения изменится с projectID.ew.r.appspot.com чтобы service1-dot-projectID.ew.r.appspot.com .

Затем я указываю цель в задании cron на service1 и повторно развертываю app.yaml и cron.yaml. Задание cron теперь завершается сбоем со статусом 400 при каждом запуске. Из того, что я вижу в журналах ProtoPayLoad, хост не использует правильный URL.

Задание cron использует URL-адрес service1.projectID.ew.r.appspot.com , в соответствии со значением protoPayLoad «хост» в журнале. Задание cron возвращает статус 400. Почему задание cron не использует service1-dot-projectID.ew.r.appspot.com URL-адрес? Что я могу сделать, чтобы заставить задание cron правильно настроить таргетинг на определенную службу?

 #app.yaml with working cron job
#project URL: projectID.ew.r.appspot.com
runtime: python38

handlers:
- url: /static
  static_dir: static/

- url: /.*
  script: auto
 
 #cron.yaml with working cron job
cron:
  - description: "working cron job"
    url: /myjob/
    schedule: every 2 minutes
 

Вот версии файлов для неработающего задания cron

 #app.yaml with broken cron job
#project URL: service1-dot-projectID.ew.r.appspot.com
service: service1
runtime: python38

handlers:
- url: /static
  static_dir: static/

- url: /.*
  script: auto
 
 #cron.yaml with working cron job
cron:
  - description: "working cron job"
    url: /myjob/
    schedule: every 2 minutes
    target: service1
 

Ошибка в файле журнала App Engine содержит сведения о protoPayLoad.

 host:"service1.projectID.ew.r.appspot.com"
 

Я думаю, что это должно быть следующим

 host:"service1-dot-projectID.ew.r.appspot.com"
 

В моем проекте развернуто несколько служб, которые будут использовать задания cron, специфичные для каждой службы.
Я не могу просто использовать имя службы по умолчанию.
Я ценю всю помощь.

Ответ №1:

Только после публикации вопроса вы найдете ответ. Этот проект является проектом Django. Файл настроек django содержит список URL-адресов, определенных в переменной ALLOWED_HOSTS . service1-dot-projectID.ew.r.appspot.com был определен , но service1.projectID.ew.r.appspot.com не был определен.

Как только это было добавлено, задание cron работало отлично, нацеливаясь на службу как обычно.