【发布时间】:2015-07-05 03:11:22
【问题描述】:
我想知道启动烧瓶应用程序的正确方法。文档显示了两个不同的命令:
$ flask -a sample run
和
$ python3.4 sample.py
产生相同的结果并正确运行应用程序。
两者之间有什么区别,应该使用哪个来运行 Flask 应用程序?
【问题讨论】:
我想知道启动烧瓶应用程序的正确方法。文档显示了两个不同的命令:
$ flask -a sample run
和
$ python3.4 sample.py
产生相同的结果并正确运行应用程序。
两者之间有什么区别,应该使用哪个来运行 Flask 应用程序?
【问题讨论】:
不导出任何内容的非常简单的自动方法是使用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 命令是用于与 Flask 应用程序交互的 CLI。 docs 描述了如何使用 CLI 命令和添加自定义命令。 flask run 命令是启动开发服务器的首选方式。
使用FLASK_APP 环境变量将命令指向您的应用程序。设置FLASK_ENV=development 以使用调试器和重新加载器运行。切勿使用此命令公开部署,使用生产 WSGI 服务器,例如 Gunicorn、uWSGI、Waitress 或 mod_wsgi。
$ 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.run(debug=True)
这两个命令最终都会启动 Werkzeug development server,顾名思义,它会启动一个仅应在开发期间使用的简单 HTTP 服务器。您应该更喜欢使用flask run 命令而不是app.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)
【讨论】:
你只需要运行这个命令
python app.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
【讨论】:
Latest documentation 具有以下示例,假设您要运行hello.py(使用.py 文件扩展名是可选的):
Unix、Linux、macOS 等:
$ export FLASK_APP=hello
$ flask run
窗户:
> set FLASK_APP=hello
> flask run
【讨论】:
只有在你输入时它才会在 cmd 中工作
> pipenv shell
先在虚拟环境中启动子shell,然后输入
> set FLASK_APP=hello
> flask run
【讨论】: