Can't connect to Flask web service, connection refused

Question:

I’m trying to run a simple web server on a Raspberry Pi with Flask. When I run my Flask app, it says:

running on http://127.0.0.1:5000/

But when I enter this address on my laptop’s in Chrome, I get

ERR_CONNECTION_REFUSED

I can open 127.0.0.1:5000 on the Raspberry Pi’s browser. What do I need to do to connect from another computer?

Asked By: Yashar

||

Answers:

You will have to run the development server such that it listens to requests on all interfaces and not just the local one

Ask Flask to listen on 0.0.0.0:PORT_NUMBER

or any other port you may choose

Answered By: Hitesh Dharamdasani

Run your app like this:

if __name__ == '__main__':
    app.run(host='0.0.0.0')

It will make the server externally visible. If the IP address of the machine is 192.168.X.X then, from the same network you can access it in 5000 port. Like, http://192.168.X.X:5000

Answered By: salmanwahed

when you are running the server via flask run change it to flask run --host=0.0.0.0
to connect, find the IPV4 address of the server that your script is running on. On the same network, go to http://[IPV4 address]:5000

Answered By: Sam Bernstein

A reason could also be in firewall refusing incoming connections on port 5000. Try:

sudo ufw allow 5000
Answered By: Artem Zaytsev
app.run(host='0.0.0.0',port=5000)

if you run your app in this way then your server will be visible externally.
Steps by Setp:

  1. Run your app by using the following command

    app.run(host=’0.0.0.0′,port=5000)

  2. Go to the window cmd . Type ipconfig and get the get the IPV4 adress suppose your IPV4 address is 192.168.X.X

  3. Go to the mobile browser and type the 192.168.X.X:5000

Answered By: Muhammad Usman

If you have debug = True inside your app.run(), then it will not be visible to other machines either. Specify host and port inside app.run() without the debug = True.

Answered By: mouserat
  • Both devices must be connected to same network.
  • Use app.run(host='0.0.0.0',port=5000) and run with your own Ipv4
    address like his http://[Your Ipv4 address]:5000
  • If you are connecting this with android app then don’t forget to
    put INTERNET permission in manifest file.
Answered By: Ehtasham Ali

Well i was also here to know answer but i guess i found out problem. The reason is that you may not activated or run flask that’s why it is showing error. For that you have to start from terminal "flask run" and then surely your flask will run…

Answered By: Swapnil Watkar

The issue may occur, if VPN is on, so try to switch it off.

Answered By: Tony Yusupov

Contrary to popular believe 127.0.0.1 is not the same a localhost.
I solved the issue above by setting 127.0.0.1 explicitly on both ends.

Answered By: sonium

On MacOS 12.4 (Monterey) I couldn’t load localhost nor my local IP but it worked with both of these:

  • 0.0.0.0
  • 127.0.0.1

Just change the URL in the browser if it loads with "localhost".

Answered By: DynamicDan
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.