【发布时间】:2017-12-22 03:28:54
【问题描述】:
如标题所示,我正在尝试创建一个可以跨网络访问的 Flask 应用程序(使用 Python 2.7)。我已经成功启动并运行了该应用程序,并且它在运行该应用程序的计算机的所有 Wi-Fi 网络中都能成功运行。我一直在使用我的内部 IP 地址和端口 8000 访问它。每当我从连接到 Wi-Fi 的手机连接时,它就可以工作。但是,当我切换到蜂窝数据并从中连接时,它不起作用,而是说“响应时间太长”。应用程序本身的代码如下:
from flask import Flask, render_template
from GradeScraper import scrapeforgrades
app = Flask(__name__)
@app.route('/')
def home():
scrapeforgrades()
return render_template("Grades.html")
if __name__ == '__main__':
app.run(host='0.0.0.0', port=8000, debug=True)
GradeScraper 只是我编写的一个网络爬虫,可以在应用程序中调用。我不认为该文件是我的问题的原因。
我也尝试从我的外部 IP 地址连接到应用程序,但它显示“拒绝连接”。我去了this我找到的StackOverflow页面,答案说的是安全设置。我完全不明白如何改变这些。问这个问题的人最后评论说“我玩弄了安全设置,终于让它工作了”,这让我得出结论,我应该做同样的事情。不幸的是,我不知道该怎么做。有人能指出我正确的方向吗?我会提供所有需要的额外信息。
谢谢,
我
【问题讨论】:
-
您是否在路由器上进行了端口转发?你发现的帖子是关于亚马逊网络服务的,这与你的情况无关。如果没有端口转发,公共互联网将无法访问您的内部局域网计算机的端口。
-
正如@ThuYeinTun 所说,如果没有端口转发,您就无法从网络外部访问您的机器。您必须在 wifi 路由器上进行弱设置。绝对是硬件问题,与编码无关。
-
哦,我差点忘了:无论你做什么,在设置 NAT 时不要让
debug=True处于开启状态,这是一个重大的安全漏洞,并为攻击者从您的进程中运行任意 Python 代码。
标签: python python-2.7 networking flask