[英]How to run a flask application?
我想知道启动 flask 应用程序的正确方法。 文档显示了两个不同的命令:
$ flask -a sample run
和
$ python3.4 sample.py
产生相同的结果并正确运行应用程序。
两者之间有什么区别,应该使用哪个来运行 Flask 应用程序?
flask
命令是一个用于与 Flask 应用程序交互的 CLI。 文档描述了如何使用 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()
方法。
最新文档有以下示例,假设您要运行hello.py
(使用.py
文件扩展名是可选的):
Unix、Linux、macOS 等:
$ export FLASK_APP=hello
$ flask run
视窗:
> set FLASK_APP=hello
> flask run
你只需要运行这个命令
蟒蛇应用程序.py
(app.py 是你想要的烧瓶文件)
但请确保您的 .py 文件具有以下烧瓶设置(与端口和主机相关)
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)
对于 Linux/Unix/MacOS:-
export FLASK_APP = sample.py
flask run
对于 Windows:-
python sample.py
OR
set FLASK_APP = sample.py
flask run
仅当您键入时它才会在 cmd 中工作
> pipenv shell
首先在虚拟环境中启动子shell,然后键入
> set FLASK_APP=hello
> flask run
不导出任何内容的非常简单的自动方法是使用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)
请使用简化形式:
$ FLASK_APP=sample flask run
您也可以通过这种方式运行 flask 应用程序,同时明确激活 DEBUG 模式。
FLASK_APP=app.py FLASK_DEBUG=true flask run
作为 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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.