如何运行烧瓶应用程序?

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

$ flask -a sample run

还有

$ python3.4 sample.py

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

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

236401 次浏览

The flask command is a CLI for interacting with Flask apps. The docs describe how to use CLI commands and add custom commands. The flask run command is the preferred way to start the development server.

Never use this command to deploy publicly, use a production WSGI server such as Gunicorn, uWSGI, Waitress, or mod_wsgi.

As of Flask 2.2, use the --app option to point the command at your app. It can point to an import name or file name. It will automatically detect an app instance or an app factory called create_app. Use the --debug option to run in debug mode with the debugger and reloader.

$ flask --app sample --debug run

Prior to Flask 2.2, the FLASK_APP and FLASK_ENV=development environment variables were used instead. FLASK_APP and FLASK_DEBUG=1 can still be used in place of the CLI options above.

$ export FLASK_APP=sample
$ export FLASK_ENV=development
$ flask run

On Windows CMD, use set instead of export.

> set FLASK_APP=sample

For PowerShell, use $env:.

> $env:FLASK_APP = "sample"

The python sample.py command runs a Python file and sets __name__ == "__main__". If the main block calls app.run(), it will run the development server. If you use an app factory, you could also instantiate an app instance at this point.

if __name__ == "__main__":
app = create_app()
app.run(debug=True)

Both these commands ultimately start the Werkzeug development server, which as the name implies starts a simple HTTP server that should only be used during development. You should prefer using the flask run command over the app.run().

Latest documentation has the following example assuming you want to run hello.py(using .py file extension is optional):

Unix, Linux, macOS, etc.:

$ export FLASK_APP=hello
$ flask run

Windows:

> set FLASK_APP=hello
> flask run

For Linux/Unix/MacOS :-

export FLASK_APP = sample.py
flask run

For Windows :-

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

you just need to run this command

python app.py

(app.py is your desire flask file)

but make sure your .py file has the following flask settings(related to port and host)

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)

The very simples automatic way without exporting anything is using python app.py see the example here

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)

You can also run a flask application this way while being explicit about activating the DEBUG mode.

FLASK_APP=app.py FLASK_DEBUG=true flask run