Ошибка «Нет запущенных веб-процессов» при попытке связаться с моим приложением Heroku (Python / Flask) - PullRequest
1 голос
/ 21 марта 2020

Впервые я создал очень легкое приложение python / flask, которое полностью написано в одном файле. Я попытался создать легкий API и сделать его доступным из терминала (curl, et c.) И получил следующую ошибку после того, как развернул его и попытался получить данные:

    desc="No web processes running" .....

Приложение Структура папок:

Имя папки:

app.py Procfile requirements.txt

Теперь, что каждый из них содержит:

приложение. py

    import flask
    import datetime
    import requests
    import json


    app = flask.Flask(__name__)


    @app.route('/covidData', methods=('GET', 'POST'))
    def get_data():

        country_input = flask.request.args.get('country')
        date_input = flask.request.args.get('date')
        date_split = date_input.split("-")
        date = datetime.datetime(int(date_split[2]),  int(date_split[0]), int(date_split[1])).strftime('%m-%d-%Y')

        data = requests.get('https://covid19.mathdro.id/api/daily/' + date)
        processed_data = data.json()

        for country in processed_data:
            if country['countryRegion'] == country_input:
                target_country = country

        requested_data = {"Country": target_country['countryRegion'], "Cases": target_country["confirmed"], "Recovered": target_country["recovered"]}

        return flask.jsonify(requested_data)


    if __name__ == '__main__':
        app.run(port=5000)

Procfile:

    gunicorn wsgi:app

требования:

    requests==2.22.0
    Flask==1.1.1

Как я развернул : 1. git init 2. вход в heroku 3. создание Procfile 4. приложения heroku: создание 5. git add. 6. git commit -m "установка на heroku" 7. git pu sh masterku master

Затем я пытаюсь получить данные с локального терминала:

    curl -X POST "https://covid-19-2020-api.herokuapp.com/covidData?country=Israel&date=03-20-2020"

И получите следующую ошибку:

    heroku[router]: at=error code=H14 desc="No web processes running" method=POST path="/covidData?country=Israel&date=03-20-2020" host=covid-19-2020-api.herokuapp.com request_id=8b56257e-4c4f-46df-b8d9-ee487a4a5480 fwd="185.175.33.226" dyno= connect= service= status=503 bytes= protocol=https

В чем может быть проблема, любые советы, указания будут высоко оценены! Я новичок в создании API

Спасибо!

Ответы [ 2 ]

1 голос
/ 22 марта 2020

Хорошо, я нашел решение. Это было сделано в три этапа:
1. в моем терминале запускалась heroku ps:scale web=1 - Начало работы на Heroku с Python
2. Поскольку у меня нет отдельного файла wsgi , в моем procfile, вместо wsgi, я поставил имя файла gunicorn app:app
3. Добавил gunicorn в мой файл требований

Теперь команда curl работает с любого терминала

0 голосов
/ 22 марта 2020

Procfile должен выглядеть следующим образом:

web: <command>
web: gunicorn wsgi:app

справочный пример

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...