Flask is a popular Python microframework for building web applications. Sometimes, you need your Flask app accessible from any device on your network, not just your local machine. This requires setting the host
parameter in app.run()
to '0.0.0.0'
. This article explains how to configure your Flask development server for network accessibility.
Table of Contents
- The
app.run()
Function - Configuring the Host Parameter
- Using the Port Parameter
- The Debug Mode
- Putting it All Together
- Production Deployments
The app.run()
Function
The app.run()
function starts the Flask development server. It accepts several optional arguments to customize its behavior. Key arguments include host
, port
, and debug
.
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello_world():
return "Hello, World!
"
if __name__ == "__main__":
app.run() # Defaults to host='127.0.0.1', port=5000
This starts the server on localhost
(127.0.0.1
) using port 5000. To make it accessible from other devices, we’ll adjust the host
parameter.
Configuring the Host Parameter
The host
parameter specifies the network interface the server listens on. Setting it to '0.0.0.0'
instructs the server to listen on all available interfaces, making your application accessible from any device on the same network.
if __name__ == "__main__":
app.run(host='0.0.0.0')
Using the Port Parameter
The port
parameter specifies the port number. The default is 5000. If this port is already in use, you’ll need to choose an alternative.
if __name__ == "__main__":
app.run(host='0.0.0.0', port=8080)
The Debug Mode
The debug
parameter enables debugging features like automatic reloading upon code changes and an interactive debugger. It’s extremely useful during development but poses a significant security risk in production. Never use debug=True
in a production environment.
if __name__ == "__main__":
app.run(host='0.0.0.0', port=8080, debug=True)
Putting it All Together
Combining all parameters provides complete control over your development server.
if __name__ == "__main__":
app.run(host='0.0.0.0', port=8081, debug=True)
Production Deployments
The app.run()
method is intended for development only. For production, use a production-ready WSGI server such as Gunicorn or uWSGI with a process manager like systemd or supervisord for better performance, security, and reliability.