#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 работало отлично, нацеливаясь на службу как обычно.