如何使用Sanic框架获取默认网络接口的IP地址
能否通过Sanic获取默认网络接口的IP地址
Sanic本身没有封装专门用于获取默认网络接口IP的内置方法,你不需要刻意寻找框架专属的实现,直接在Sanic项目中复用你现有的socket逻辑即可,该逻辑和Sanic运行不存在兼容问题,可以正常拿到预期的IP地址。
如果你需要获取Sanic服务实际绑定的监听地址,可以在服务启动后从应用实例配置中读取,参考代码如下:
import socket from sanic import Sanic from sanic.response import text app = Sanic("ip_demo") # 复用你原有获取默认网卡IP的逻辑 def get_local_default_ip(): hostname = socket.gethostname() return socket.gethostbyname(hostname) @app.route("/ip") async def ip_view(request): return text(f"默认网络接口IP:{get_local_default_ip()}") if __name__ == "__main__": app.run(host="0.0.0.0", port=8080) # 服务启动后可通过应用配置读取绑定的监听host、端口信息
注意:如果启动Sanic时将host设置为
0.0.0.0,该参数代表监听本机所有网卡地址,并非真实的默认出口IP,这种场景下仍然需要通过上述socket方法获取实际的默认网卡IP,和你之前的实现逻辑完全一致。
内容的提问来源于stack exchange,提问作者nico
相关产品推荐
相关产品推荐

