#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)