Flask Waitress Simple Webserver

Viewed 19

I am trying to set up a simple webserver. This is the simplified code.

from flask import Flask
from waitress import serve

app = Flask(__name__)

@app.route("/data")
def get_data():
    return {"abc"[i]:i for i in range(3)}

if __name__=="__main__":  
    # app.run(debug=True, host="0.0.0.0", port=8080)
    serve(app, host="0.0.0.0", port=8080)

I can connect to this on my desktop and my phone (which is on my WiFi) and it works as desired.

The issue comes when a connection is attempted from a device not on my network (say a phone on a different network). The response is ERR_ADDRESS_UNREACHABLE.

I setup an inbound rule in my firewall settings. I'm on a windows 10 OS right now if that matters.

  • ProtocolType=TCP (it was default)
  • LocalPort="Specific Ports" and 8080
  • RemotePort="All Ports"

I also read I should set up port forwarding in my router so I followed these instructions from my ISP.

  • It's in the Service List
  • Global Port Range is 8080-8080
  • Protocol is TCP/UDP (again, default)
  • Host Port is 8080

I'm not sure what else I should change.

Thanks!

1 Answers

Answering my own question for posterity.

My issue was some AT&T weirdness. I turned on IP passthrough in my router settings and other people can connect to the server.

If I run ipconfig in my cmd prompt, I get an IPv4 of A.B.C.D, but https://whatismyipaddress.com/ responds with E.F.G.H.

I can connect to A.B.C.D:8080/data from my computer but not the other IP.

Someone not on my IP can connect to E.F.G.H:8080/data from a different network but not the other one.

The final takeaway is that I should probably just use some sort of ns services like cloudflare.

Related