api - Flask 分配公共 IP
问题描述
我正在尝试使用女服务员或普通烧瓶连接使我的 api 具有公共 IP,但我不能。
app = Flask(__name__)
mysql = MySQL()
@app.route('/')
def index():
return "Hello, world!"
if __name__ == "__main__":
# waitress.serve(app=app, host="0.0.0.0", port=5013)
app.run(host="10.0.***", port=5013, debug=True, threaded=True)
我只能从我的机器上访问它。但是当我尝试从外部访问(即任何手机或平板电脑)时,我无法访问它。
解决方案
虽然这是可能的,但您不应在生产中使用 Flask 开发服务器。Flask 开发服务器的设计并不是特别安全、稳定或高效。请参阅有关部署的文档以获取正确的解决方案。
--host
to 选项flask run
或tohost
参数app.run()
控制开发服务器侦听的地址。默认情况下它在 上运行localhost
,将其更改为flask run --host=0.0.0.0
(或app.run(host="0.0.0.0")
)以在您机器的所有 IP 地址上运行。
0.0.0.0
是一个特殊值,您不能直接在浏览器中使用,您需要导航到网络上机器的实际 IP 地址。您可能还需要调整防火墙以允许外部访问端口。
Flask快速入门文档在“外部可见服务器”部分对此进行了解释:
如果您运行服务器,您会注意到服务器只能从您自己的计算机访问,而不能从网络中的任何其他计算机访问。这是默认设置,因为在调试模式下,应用程序的用户可以在您的计算机上执行任意 Python 代码。
如果您禁用了调试器或信任网络上的用户,您可以通过添加
--host=0.0.0.0
到命令行使服务器公开可用:$ flask run --host=0.0.0.0
这告诉您的操作系统侦听所有公共 IP。
推荐阅读
- python - 散景“显示”给出 AttributeError:“NoneType”对象没有属性“引用”
- oracle - Oracle 托管驱动程序用户定义类型
- javascript - 反应更新未安装的组件
- spacy - 为 spaCy 使用 BILOU 标签注释句子
- javascript - 从 JavaScript 数组中删除对象
- linux - 启动使用 killall 杀死的服务
- installation - 安装 Pyinstaller
- java - Spring 应用程序未运行(使用 Maven)
- java - Spring注释事务回滚不适用于两个表
- python - Django:将 3 个单独的“过滤器()”组合成单个查询