I want to change the host and port that my app runs on. I set
app.run, but the
flask run command still runs on the default
127.0.0.1:8000. How can I change the host and port that the
flask command uses?
if __name__ == '__main__': app.run(host='0.0.0.0', port=3000)
set FLASK_APP=onlinegame set FLASK_DEBUG=true python -m flask run
flask command is separate from the
flask.run method. It doesn’t see the app or its configuration. To change the host and port, pass them as options to the command.
flask run -h localhost -p 3000
--help for the full list of options.
SERVER_NAME config will not affect the command either, as the command can’t see the app’s config.
Never expose the dev server to the outside (such as binding to
0.0.0.0). Use a production WSGI server such as uWSGI or Gunicorn.
gunicorn -w 2 -b 0.0.0.0:3000 myapp:app
from flask import Flask app = Flask(__name__) def hello(): return "Hello World!" if __name__ == '__main__': app.run(host="localhost", port=8000, debug=True)
Configure host and port like this in the script and run it with
You can also use the environment variable
FLASK_RUN_PORT, for instance:
export FLASK_RUN_PORT=8000 flask run * Running on http://127.0.0.1:8000/
Source: The Flask docs.
When you run the application server using the
flask run command, the
__name__ of the module is not
"__main__". So the
if block in your code is not executed — hence the server is not getting bound to
0.0.0.0, as you expect.
For using this command, you can bind a custom host using the
flask run --host=0.0.0.0
You also can use it:
if __name__ == "__main__": app.run(host='127.0.0.1', port=5002)
and then in the console use it
set FLASK_ENV=development python app.py