如何运行 Flask 应用程序?

2024-12-30 08:42:00
admin
原创
45
摘要:问题描述:我想知道启动 Flask 应用程序的正确方法。文档显示了两个不同的命令:$ flask -a sample run 和$ python3.4 sample.py 产生相同的结果并正确运行应用程序。两者之间有什么区别?应该使用哪一个来运行 Flask 应用程序?解决方案 1:该flask命令是用于与...

问题描述:

我想知道启动 Flask 应用程序的正确方法。文档显示了两个不同的命令:

$ flask -a sample run

$ python3.4 sample.py 

产生相同的结果并正确运行应用程序。

两者之间有什么区别?应该使用哪一个来运行 Flask 应用程序?


解决方案 1:

flask命令是用于与 Flask 应用交互的 CLI。文档描述了如何使用 CLI 命令和添加自定义命令。该flask run命令是启动开发服务器的首选方式。

切勿使用此命令公开部署,请使用生产 WSGI 服务器,例如 Gunicorn、uWSGI、Waitress 或 mod_wsgi。

从 Flask 2.2 开始,使用--app选项将命令指向您的应用。它可以指向导入名称或文件名。它将自动检测名为 的应用实例或应用工厂create_app。使用--debug选项使用调试器和重新加载器在调试模式下运行。

$ flask --app sample --debug run

在 Flask 2.2 之前,使用FLASK_APP和环境变量代替。仍然可以代替上述 CLI 选项。FLASK_ENV=development`FLASK_APP`FLASK_DEBUG=1

$ 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

视窗:

> set FLASK_APP=hello
> flask run

解决方案 3:

你只需要运行这个命令

python 应用程序.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:

无需导出任何内容的非常简单的自动方式是使用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)

解决方案 5:

您还可以通过这种方式运行 flask 应用程序,同时明确激活 DEBUG 模式。

FLASK_APP=app.py FLASK_DEBUG=true flask run

解决方案 6:

对于 Linux/Unix/MacOS :-

export FLASK_APP = sample.py
flask run

对于Windows:-

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

解决方案 7:

对于 Windows 中的 pycharm 或 VS Code 编辑器,在终端上运行以下行:

set FLASK_APP=main.py
$env:FLASK_APP = "main.py"
flask run
相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1008  
  在项目管理中,变更是一个不可避免的现象。无论是客户需求的调整、市场环境的变化,还是技术方案的更新,都可能引发项目的变更。如果处理不当,这些变更可能会导致项目延期、成本超支,甚至项目失败。因此,如何有效地应对项目变更,成为项目管理中的核心挑战之一。IPD(集成产品开发)作为一种高效的项目管理方法,其流程图不仅能够帮助团队...
IPD流程中的charter   0  
  IPD(Integrated Product Development,集成产品开发)是华为在长期实践中总结出的一套高效产品开发管理体系。它不仅帮助华为在全球市场中脱颖而出,也成为许多企业提升产品开发效率的参考标杆。IPD的核心在于通过跨部门协作、流程优化和资源整合,实现从需求分析到产品交付的全生命周期管理。通过实施IP...
IPD开发流程管理   0  
  华为IPD(集成产品开发)流程是一种以客户需求为导向、跨部门协同的高效项目管理方法。它通过系统化的流程设计和严格的阶段控制,确保项目从概念到交付的每个环节都能高效运作。IPD流程的核心在于打破传统职能部门的壁垒,将产品开发、市场、销售、供应链等关键环节整合到一个统一的框架中,从而实现资源的优化配置和信息的无缝流动。这种...
IPD流程中TR   0  
  在项目管理的实践中,CDCP(Certified Data Center Professional)认证评审是一个至关重要的环节。通过这一评审,项目团队不仅能够验证其数据中心设计和运营的合规性,还能提升整体管理水平。为了确保评审的顺利进行,准备一系列关键文档是必不可少的。这些文档不仅是评审的依据,也是项目团队与评审专家...
华为IPD是什么   0  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用