Проблема с развертыванием приложения flask на heroku

#flask #heroku #deployment #gunicorn

#flask #heroku #развертывание #gunicorn

Вопрос:

У меня возникли проблемы с развертыванием моего приложения flask на heroku, мое дерево каталогов выглядит так, как показано ниже:

 ├── app
│   ├── errors.py
│   ├── forms.py
│   ├── __init__.py
│   ├── __init__.pyc
│   ├── models.py
│   ├── __pycache__
│   ├── routes.py
│   ├── static
│   ├── storage.db
│   └── templates
├── migrations
├── Procfile
├── README.md
├── requirements.txt
├── run.py
└── runtime.txt
 
   $ cat runtime
  python-3.8.5

  $ cat Procfile 
  web: gunicorn: app:app
 

Я совсем запутался в конфигурации Procfile, должен ли я позвонить run.py (Архив, который я использую для локального вызова с помощью «flask run») или app (папка, в которой init.py вызывает экземпляр flask и экземпляр sql_alchemy)?

В любом случае, обе конфигурации вернули ошибку ниже:


$ heroku logs —хвост

 heroku[web.1]: State changed from crashed to starting
heroku[web.1]: Starting process with command `gunicorn: app:app`
app[web.1]: bash: gunicorn:: command not found
heroku[web.1]: Process exited with status 127
heroku[web.1]: State changed from starting to crashed

 

gunicorn уже настроен на requirements.py

Комментарии:

1. Предполагая, что вы run.py являетесь точкой входа вашего приложения, и вы назвали свой экземпляр flask как app , ваш Procfile должен выглядеть следующим образом web: gunicorn run:app

2. Спасибо @Aditya, это сработало! Почему бы вам не ответить ниже, а не просто прокомментировать? Тогда я отмечу как лучший ответ, это должно помочь другим людям 🙂

3. Добро пожаловать :). Честно говоря, я не знаю, почему я не написал это как ответ🤔. Но в любом случае я пишу это как ответ сейчас, чтобы другие люди также могли извлечь из этого пользу.

Ответ №1:

Предполагая, что вы run.py являетесь точкой входа вашего приложения, и вы назвали свой экземпляр flask как app , ваш Procfile должен выглядеть следующим образом:

 web: gunicorn run:app
 

Это потому, что в вашем Procfile первым аргументом должно быть имя вашего основного файла или файла ввода, из которого вы запускаете свой веб-сайт, а вторым — имя самого вашего экземпляра flask. По крайней мере, это касается случаев с gunicorn и heroku.