Ошибки при посещении приложения Flask, развернутого в Heroku - PullRequest
0 голосов
/ 20 апреля 2020

У меня есть очень, очень простое Flask приложение, которое я тестирую на Heroku, просто чтобы посмотреть, работает ли оно. Я пытался подключить его к своему репозиторию GitHub и использовать Heroku CLI, но это не меняет результат.

from flask import Flask

app = Flask("__name__")


@app.route("/api", methods=["GET"])
def get():
    return {"success": "much success"}


app.run(debug=True)

Я следовал учебному пособию по Udemy при развертывании в Heroku, но оно не работает. Мне сказали добавить эти файлы в мой root:

// runtime.txt
python-3.8.3

// requirements.txt
// created by running pip3 freeze > requirements.txt
// manually added 'uwsgi'
appdirs==1.4.3
attrs==19.3.0
black==19.10b0
click==7.1.1
Flask==1.1.2
gunicorn==20.0.4
itsdangerous==1.1.0
Jinja2==2.11.2
MarkupSafe==1.1.1
pathspec==0.8.0
regex==2020.4.4
toml==0.10.0
typed-ast==1.4.1
Werkzeug==1.0.1
uwsgi

// uwsgi.ini
[uwsgi]
http-socket = :$(PORT)
master =true
die-on-term = true
module = app:app 
memory-report = true

// Procfile
web: uwsgi uwsgi.ini

Когда я захожу в приложение на Heroku, я получаю «Ошибка приложения». Вот что показывает логи Heroku:

2020-04-20T20:32:57.218876+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=ninny-code-flask.herokuapp.com request_id=d355b4b9-c532-4971-91fa-e3421ca98971 fwd="104.178.145.19" dyno= connect= service= status=503 bytes= protocol=https

Ответы [ 2 ]

0 голосов
/ 20 апреля 2020

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

OSError: [Errno 98] Address already in use

Найдите процесс pid и завершите его. Должен быть другой процесс, прослушивающий порт. Вы можете узнать этот процесс, используя следующую команду:

$ lsof -i :5000

и затем запустите sudo, чтобы завершить процесс.

sudo kill -9 <process_id>

Однако теперь я вижу Код ошибки h10 в логах heroku.

Эта ошибка выдается, если в узле. js среда, вы забыли установить стартовый скрипт. Heroku использует этот сценарий для запуска приложения, поэтому, если оно отсутствует, оно выдаст сообщение с кодом сбоя приложения H10-App.

Проверьте файл Procfile, найдите интервальные ошибки.

Wrong web : node server.js
Correct web:node server.js
0 голосов
/ 20 апреля 2020

Я думаю, что вам не хватает PORT, который нужно назначить с помощью переменной env $ PORT (предоставленной Heroku)

app.run(debug=False, port=int(os.environ.get("PORT", 5000)), host='0.0.0.0')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...