Как запустить задание cron в Flexible GAE

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

Теперь я пытаюсь развернуть задание cron для периодической очистки старых объектов, чтобы уменьшить размер набора данных. У меня работает задача очистки, и я могу запустить ее вручную. Однако я постоянно получаю следующую ошибку в журналах при попытке запустить его автоматически:

Запрос не удался, поскольку для URL-адреса требуется логин пользователя. Для запросов, вызываемых в App Engine (автономные запросы, такие как очередь задач, или веб-перехватчики, такие как XMPP и входящая почта), URL-адрес должен требовать входа в систему администратора (или без входа).

Из того, что я прочитал в документации, среда Flex больше не использует раздел обработчиков файла app.yaml, и приложение должно обрабатывать проверку самой службы cron. Но эта ошибка, похоже, указывает на то, что сценарий даже не запускается.

Я пробовал следующее, каждый раз получая это сообщение об ошибке, приведенное выше: 1. отключение IAP и отсутствие ограничений на доступ 2. добавление раздела обработчиков в файл app.yaml для задания / clean

Кто-нибудь сталкивался с этой проблемой и заставил ее работать?

app.yaml:

service: dashboard
env: flex
runtime: python
entrypoint: gunicorn -b :$PORT dashboard:app --timeout 300
api_version: 1
threadsafe: false
skip_files: 
- ^(.*/)?\.pyc$

runtime_config:
  python_version: 2

cron.yaml:

cron:
- description: remove old cluster heartbeats
  url: /clean?
  schedule: every 24 hours
  target: dashboard

person Bill Snider    schedule 03.10.2017    source источник
comment
Попробуйте добавить обработчик в app.yaml для URL-адреса cron с помощью login:admin, см. Пример stackoverflow.com/questions/45776773/.   -  person Dan Cornilescu    schedule 04.10.2017
comment
Я пробовал с таким новым обработчиком. Я получаю ту же ошибку при попытке проверить работу cron. Я также обнаружил, что больше не могу запускать его напрямую. обработчики: - url: / clean script: dashboard.app логин: admin   -  person Bill Snider    schedule 04.10.2017
comment
В коде вашего приложения он прослушивает запросы на /clean? Возможно, вам потребуется обновить свой вопрос, добавив в него собственный код. Как вы сказали, в flex вы обрабатываете маршрутизацию, а не GAE.   -  person BrettJ    schedule 05.10.2017


Ответы (1)


Наконец-то я получил эту работу. Но я не уверен, что именно заставило его работать. Я не менял свой app.yaml, cron.yaml или код приложения.

Однако в этом проекте я создал еще одну базовую службу «Hello World», чтобы посмотреть, смогу ли я заставить ее работать. Как только он заработал, я вернулся и попробовал свою первоначальную службу приборной панели, и теперь она работала. Похоже, что развертывание новой службы устранило причину проблемы.

person Bill Snider    schedule 05.10.2017
comment
Возможно, скрывается какая-то ошибка, связанная с развертыванием, аналогичный обходной путь сообщается здесь: stackoverflow.com/questions/45363766/ - person Dan Cornilescu; 05.10.2017