I want to know the correct way to start a flask application. The docs show two different commands:
$ flask -a sample run
$ python3.4 sample.py
produce the same result and run the application correctly.
What is the difference between the two and which should be used to run a Flask application?
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.
FLASK_APP environment variable to point the command at your app. Set
FLASK_ENV=development to run with the debugger and reloader. Never use this command to deploy publicly, use a production WSGI server such as Gunicorn, uWSGI, Waitress, or mod_wsgi.
$ export FLASK_APP=sample $ export FLASK_ENV=development $ flask run
On Windows CMD, use
set instead of
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 __name__ == "__main__": 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