Ваш WSGIPath ссылается на файл, который не существует

Я пытаюсь загрузить приложение Flask в AWS, но я получаю сообщение об ошибке:

Ваш WSGIPath ссылается на файл, который не существует.

После некоторого поиска в Интернете я обнаружил, что в папке .ebextensions я должен указать путь. Не было папки .ebextensions, поэтому я создал ее и добавил следующий код в файл с именем settings.config:

option_settings:
  "aws:elasticbeanstalk:container:python":
    WSGIPath: project/application.py

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

Ответы

Ответ 1

Там много проблем с конфигурацией, которые могут возникнуть с Flask, развернутым на AWS. Я столкнулся с подобной проблемой, как и вы, поэтому я могу хотя бы показать вам, что я сделал, чтобы устранить ошибку WSGI.

Во-первых, видимо, вы можете сделать это без папки .ebextensions(см. этот пост здесь) и посмотрите на ответ davetw12. Однако имейте в виду, что пока это работает, Я не совсем уверен, что вывод о правильности .ebextensions правилен, основываясь на некоторых комментариях ниже). Вместо этого (в терминале) я перешел к моему проекту на том же уровне, что и мой каталог .elasticbeanstalk, и использовал команду eb config. Это откроет список параметров, которые вы можете настроить для настройки приложения beanstalk. Перейдите по параметрам, пока не найдете путь WSGI. Я заметил, что у вас установлено значение project/application.py, однако это не должно включать ссылку на папку, просто application.py. Вот как это выглядит на моем Mac в терминале (путь WSGI находится внизу).

enter image description here

Обратите внимание, что, как только вы получите этот набор, EB, вероятно, перераспределит. Это здорово. Пусть это.

Как только вы получите этот набор, зайдите в свой файл application.py и убедитесь, что вы вызываете свое приложение application. Например, мой выглядит следующим образом:

from flask import Flask
from flask import render_template
application = Flask(__name__)

@application.route('/')
@application.route('/index')
def index():
    return render_template('index.html',
                           title='Home')

Это убрало ошибку пути WSGI - хотя мне еще пришлось исправить некоторые другие проблемы, следующие за этим:-) Но это другой набор вопросов.

Ответ 2

У меня было то же сообщение, но по очень глупой причине.

Очевидно, когда я клонировал репозиторий на свой компьютер с Windows и затем отодвинул изменения, где-то по пути Windows изменил папку ".ebextensions" на "ebextensions" (отбросив ведущую ".").

Поэтому, когда я переименовал папку в ".ebextensions" в главном репо, все снова заработало отлично.

Ответ 3

Для меня проблема была в том, что я неправильно написал имя файла:

Я написал: ..ebextensions/django.conf

Когда мне было нужно: ..ebextensions/django.config

Это стоило мне около 3 часов моей жизни сегодня. Проблема заключалась в том, что ошибка AWS вводит в заблуждение, поскольку "WSGIPath", на который она ссылается, - это не файл выше, а невидимое значение по умолчанию.