使用公共IP的Python Flask API远程访问

时间:2020-09-04 18:14:47

标签: python flask

大家好,我希望能够在树莓派上托管API并从其他网络上的计算机访问它。

这是我的简单代码,仅供测试,因为我只需要能够使用公共ip远程访问它即可。

import flask
from flask import request

app = flask.Flask(__name__)



@app.route('/', methods=['GET'])
def home():
    return '123'

app.run(host='0.0.0.0', port=3138)

因此,我在路由器选项中的与树莓派的静态内部ip链接的端口3138上创建了一个转发端口,我尝试像这样远程访问它::3138 /它应该显示“ 123”,但是它什么也没有显示,甚至都不会加载,您对如何以这种方式访问​​它有任何想法吗?

2 个答案:

答案 0 :(得分:1)

您可以做一些测试吗?

  • 您是否尝试过首先从本地网络访问它(以确保端口已打开)?

  • 还可以尝试在树莓上运行netcat(以排除程序无法运行):“ nc -l 3138”然后从手机访问端口(不应连接到网络)

  • 将您的PC设置为使用相同的IP并断开树莓派的连接(以确保端口处于打开状态)

  • 检查您是否具有公用IP,因此它不是电信级NAT(https://en.wikipedia.org/wiki/Carrier-grade_NAT)。检查您的IP是否以10.x.x.x,172.16.x.x或192.168.x.x开头(这可能表示其CGNAT)

答案 1 :(得分:0)

不建议您在生产中使用flask开发服务器。我建议您使用适合生产的WSGI(您可以使用服务生):

1. pip install waitress
2. create a file server.py (or whatever name suites you)
#content of server.py
from waitress import serve
import main #import flask app main file
serve(main.app, host='0.0.0.0', port=8080)
3. run server.py
4. access you app via:
http://<public_ip>:8080