Как запустить приложение flask?

#python #flask #anaconda

#python #фляжка

Вопрос:

Я хочу знать, как правильно запустить приложение flask. В документах показаны две разные команды:

 $ flask -a sample run
 

и

 $ python3.4 sample.py 
 

добейтесь того же результата и правильно запустите приложение.

В чем разница между ними и что следует использовать для запуска приложения Flask?

Ответ №1:

flask Команда является CLI для взаимодействия с приложениями Flask. В документах описано, как использовать команды CLI и добавлять пользовательские команды. flask run Команда является предпочтительным способом запуска сервера разработки.

Никогда не используйте эту команду для публичного развертывания, используйте рабочий сервер WSGI, такой как Gunicorn, uWSGI, Waitress или mod_wsgi.

Установите FLASK_APP переменную среды, чтобы указать команду в вашем приложении. Он может указывать на имя импорта или имя файла. Он автоматически обнаружит вызываемый экземпляр приложения или фабрику приложений create_app . Установите FLASK_ENV=development для запуска с отладчиком и перезагрузчиком.

 $ export FLASK_APP=sample
$ export FLASK_ENV=development
$ flask run
 

В Windows CMD используйте set вместо export .

 > set FLASK_APP=sample
 

Для PowerShell используйте $env: .

 > $env:FLASK_APP = "sample"
 

python sample.py Команда запускает файл Python и устанавливает __name__ == "__main__" . Если вызывается основной блок app.run() , он запускает сервер разработки. Если вы используете фабрику приложений, вы также можете создать экземпляр приложения на этом этапе.

 if __name__ == "__main__":
    app = create_app()
    app.run(debug=True)
 

Обе эти команды в конечном итоге запускают сервер разработки Werkzeug, который, как следует из названия, запускает простой HTTP-сервер, который следует использовать только во время разработки. Вы должны предпочесть использовать flask run команду app.run() , а не метод.

Ответ №2:

В последней документации приведен следующий пример, предполагающий, что вы хотите запустить hello.py (использование .py расширения файла необязательно):

Unix, Linux, macOS и т.д.:

 $ export FLASK_APP=hello
$ flask run
 

Windows:

 > set FLASK_APP=hello
> flask run
 

Ответ №3:

вам просто нужно выполнить эту команду

python app.py

(app.py является ли ваше желание файлом flask)

но убедитесь, что ваш файл .py имеет следующие настройки flask (связанные с портом и хостом)

 from flask import Flask, request
from flask_restful import Resource, Api
import sys
import os

app = Flask(__name__)
api = Api(app)
port = 5100

if sys.argv.__len__() > 1:
    port = sys.argv[1]
print("Api running on port : {} ".format(port))

class topic_tags(Resource):
    def get(self):
        return {'hello': 'world world'}

api.add_resource(topic_tags, '/')


if __name__ == '__main__':
    app.run(host="0.0.0.0", port=port)
 

Ответ №4:

Для Linux / Unix / macOS :-

 export FLASK_APP = sample.py
flask run
 

Для Windows :-

 python sample.py
      OR
set FLASK_APP = sample.py
flask run
 

Ответ №5:

он будет работать в cmd, только если вы введете

 > pipenv shell 
 

сначала запустите подоболочку в виртуальной среде, затем введите

 > set FLASK_APP=hello
> flask run
 

Ответ №6:

Самый простой автоматический способ без экспорта чего-либо — это использование python app.py см. Пример здесь

 from flask import (
    Flask, 
    jsonify
)

# Function that create the app 
def create_app(test_config=None ):
    # create and configure the app
    app = Flask(__name__)

    # Simple route
    @app.route('/')
    def hello_world(): 
        return jsonify({
           "status": "success",
            "message": "Hello World!"
        }) 
     
    return app # do not forget to return the app

APP = create_app()

if __name__ == '__main__':
    # APP.run(host='0.0.0.0', port=5000, debug=True)
    APP.run(debug=True)
 

Ответ №7:

Пожалуйста, используйте упрощенную форму:

 $ FLASK_APP=sample flask run
 

Ответ №8:

Запуск от имени службы API

 from flask import Flask
class A:
    def one(port):
        app = Flask(__name__)
        app.run(port=port)
        print("something")

    one(port=2222)
 

вывод:

 * Running on http://127.0.0.1:2222/ (Press CTRL C to quit)