Как определить конечную точку для моего приложения Flask, размещенного на Google App Engine? - PullRequest
0 голосов
/ 09 марта 2020

Мне удалось разместить мое приложение Flask на GCP 'App Engine. Точка входа по умолчанию просто запускает мой модуль app_folder/flask_app.py.

В моем приложении flask определены некоторые конечные точки, например /slack_endpoint, и я не могу получить правильный ответ при их нажатии. Настройка работает при локальном запуске.

Вот мой app.yml для GCP App Engine:

runtime: python
env: flex

runtime_config:
    python_version: 3

entrypoint: python -m app_folder.flask_app
service: default

handlers:
- url: /slack_endpoint
  script: app_folder.flask_app

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

Мои определения конечной точки flask_app.py:

@app.route('/slack_endpoint', methods=["POST"])
def accept_slack_request():
    request_dict = json.loads(request.form.to_dict()["payload"])
    slack_client = slack.Slack()
    response_code = slack_client.parse_slack_request(request_dict)

    return jsonify({"message": response_code}), 200

Замечу, что конечная точка /, предназначенная для простого отображения README.md, прекрасно работает как локально, так и при размещении в App Engine.

@app.route("/", methods=["GET"])
def index():
    """Present the Documentation"""
    _path = os.path.normpath(os.path.dirname(__file__))
    with open(f'{_path}/README.md', 'r') as readme:
        content = readme.read()
        return markdown.markdown(content)

Есть идеи, что я делаю не так?

РЕДАКТИРОВАТЬ: я переключил время выполнения моего экземпляра приложения, чтобы использовать стандартную среду Python3 .7:

service: default
runtime: python37
instance_class: F2

entrypoint: python -m app_folder.flask_app

handlers:
  - url: /slack_endpoint
    script: auto

С этими настройками все конечные точки URL обрабатываются соответствующим образом приложением, которое запускается оператором entrypoint. Это решило то, что я считал успешным развертыванием. После этого нужно было получить разрешения на доступ к отчетам журналов и устранению неполадок.

...