Configure Flask dev server to be visible across the network

前端 未结 14 2432
面向向阳花
面向向阳花 2020-11-21 05:57

I\'m not sure if this is Flask specific, but when I run an app in dev mode (http://localhost:5000), I cannot access it from other machines on the network (with

相关标签:
14条回答
  • 2020-11-21 06:41

    Add below lines to your project

    if __name__ == '__main__':
        app.debug = True
        app.run(host = '0.0.0.0',port=5005)
    
    0 讨论(0)
  • 2020-11-21 06:42

    I had the same problem, I use PyCharm as an editor and when I created the project, PyCharm created a Flask Server. What I did was create a server with Python in the following way;

    basically what I did was create a new server but flask if not python

    I hope it helps you

    0 讨论(0)
  • 2020-11-21 06:43

    If you use the flask executable to start your server, you can use flask run --host=0.0.0.0 to change the default from 127.0.0.1 and open it up to non local connections. The config and app.run methods that the other answers describe are probably better practice but this can be handy as well.

    Externally Visible Server If you run the server you will notice that the server is only accessible from your own computer, not from any other in the network. This is the default because in debugging mode a user of the application can execute arbitrary Python code on your computer.

    If you have the debugger disabled or trust the users on your network, you can make the server publicly available simply by adding --host=0.0.0.0 to the command line:

    flask run --host=0.0.0.0 This tells your operating system to listen on all public IPs.

    Reference: http://flask.pocoo.org/docs/0.11/quickstart/

    0 讨论(0)
  • 2020-11-21 06:43

    Check whether the particular port is open on the server to serve the client or not?

    in Ubuntu or Linux distro

    sudo ufw enable
    sudo ufw allow 5000/tcp //allow the server to handle the request on port 5000
    

    Configure the application to handle remote requests

    app.run(host='0.0.0.0' , port=5000)
    
    
    python3 app.py & #run application in background
    
    0 讨论(0)
  • 2020-11-21 06:44

    Try this if the 0.0.0.0 method doesn't work

    Boring Stuff

    I personally battled a lot to get my app accessible to other devices(laptops and mobile phones) through a local-server. I tried the 0.0.0.0 method, but no luck. Then I tried changing the port, but it just didn't work. So, after trying a bunch of different combinations, I arrived to this one, and it solved my problem of deploying my app on a local server.

    Steps

    1. Get the local IPv4 address of your computer. This can be done by typing ipconfig on Windows and ifconfig on Linux and Mac.

    Please note: The above step is to be performed on the machine you are serving the app on, and on not the machine on which you are accessing it. Also note, that the IPv4 address might change if you disconnect and reconnect to the network.

    1. Now, simply run the flask app with the acquired IPv4 address.

      flask run -h 192.168.X.X

      E.g. In my case (see the image), I ran it as:

      flask run -h 192.168.1.100

    On my mobile device

    Optional Stuff

    If you are performing this procedure on Windows and using Power Shell as the CLI, and you still aren't able to access the website, try a CTRL + C command in the shell that's running the app. Power Shell gets frozen up sometimes and it needs a pinch to revive. Doing this might even terminate the server, but it sometimes does the trick.

    That's it. Give a thumbs up if you found this helpful.

    0 讨论(0)
  • 2020-11-21 06:47

    If your cool app has it's configuration loaded from an external file, like in the following example, then don't forget to update the corresponding config file with HOST="0.0.0.0"

    cool.app.run(
        host=cool.app.config.get("HOST", "localhost"),
        port=cool.app.config.get("PORT", 9000)
    )            
    
    0 讨论(0)
提交回复
热议问题