404 на любом маршруте для приложения Flask, развернутого в Elastic Beanstalk - PullRequest
0 голосов
/ 23 мая 2018

Я пытаюсь разместить приложение Flask, которое реализует REST API, используя Flask-RESTful на Elastic Beanstalk через eb cli.Я успешно развернул свое приложение, и я не получаю никаких сообщений об ошибках в своем журнале событий.Я могу успешно выполнить ssh в экземплярах и запустить скрипт, чтобы предварительно заполнить базу данных и все остальное.Но всякий раз, когда я пытаюсь получить доступ к любым маршрутам, я получаю сообщение об ошибке 404.

Сначала я предполагал, что это потому, что он не находит мой WSGIPath, поэтому я изменил имя файла на application.py и обновил EBSКонфигурация программного обеспечения, чтобы указать на этот файл.Я также обновил все экземпляры от app до application в базе кода на основе документации AWS.Еще ничего.Кто-нибудь знает, что может быть не так?

Это мой application.py:

from flask import Flask

from config import Config

CONFIG = Config()

# AWS Elastic Beanstalk expects an `application` variable.
application = Flask(__name__)

if __name__ == "__main__":
    # Importing these here to avoid issue with circular imports
    from endpoints.v1.exports import exports_api
    from endpoints.v1.imports import imports_api

    application.register_blueprint(exports_api, url_prefix="/api/v1")
    application.register_blueprint(imports_api, url_prefix="/api/v1")

    application.run(debug=CONFIG.DEBUG)

Вот где файл application.py лежит в структуре папок:

- project root
    - ...
    - application.py
    - ... 

1 Ответ

0 голосов
/ 24 мая 2018

Просто понял, что происходит.Я пытался зарегистрировать чертежи внутри блока if __name__ == "__main__":.Но так как файл application.py не запускается напрямую Elastic Beanstalk, он никогда не достигал этих строк, и поэтому конечные точки, к которым я пытался обратиться, не существовали.

Мне пришлось провести рефакторинг своего кода, чтобы я могпереместите его за пределы этого блока и избегайте проблем с циклическим импортом, но теперь все работает как надо.

...