繁体   English   中英

如何运行 flask 应用程序?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM