在开发和测试过程中,我们经常需要将本地运行的应用程序暴露给外部网络。这个教程将指导你如何使用Gradio自带的内网穿透,让你的本地应用程序可以被外部网络访问。

封装函数

为了使用方便,我封装了一个函数,只需要调用这个函数即可实现

需要安装

pip install gradio===3.44.4

def to_share(server_name='0.0.0.0', server_port=8080):
    try:
        from gradio import networking
        import secrets
    except ImportError as e:
        missing_package = str(e).split("No module named ")[-1].replace("'", "")
        print(f"创建分享链接时出错,缺少必要的包:{missing_package}. 请安装它后再试。使用命令:pip install {missing_package}")
        return

    share_token = secrets.token_urlsafe(32)
    try:
        share_url = networking.setup_tunnel(server_name, server_port, share_token)
        print("分享的链接为:", share_url)
    except Exception as e:
        print(f"创建分享链接时出错:{e}")
        return

使用示例

只需要调用to_share函数,然后传入对应的端口和域名即可

from flask import Flask

app = Flask(__name__)

@app.route('/')
def home():
    return '你现在看到的是通过Gradio内网穿透服务访问的页面'

if __name__ == '__main__':
    to_share('0.0.0.0', 8080)
    app.run(host='0.0.0.0', port=8080)

注意事项

  1. 请谨慎使用内网穿透服务,确保不会意外暴露敏感或私密信息。
  2. Gradio的内网穿透服务主要用于测试和演示目的,对于生产环境的应用,请考虑使用更专业的解决方案以确保安全和稳定。
  3. 生成的分享链接只有3天的有效时间,适合临时演示使用