Gradio从入门到精通(2)---内网穿透


前言

如果你不能分享一个漂亮的演示有什么用?Gradio 可让您轻松共享机器学习演示,而不必担心在 Web 服务器上托管的麻烦。只需在 中设置,即可为您的演示创建一个可公开访问的 URL。

Gradio如何分享?

还记得我们第一章写的那个demo程序吗?只需要将最后一行更改如下:share=True

import gradio as gr   #导入gradio库,简写成gr
#我们将导入的名称从 缩短为 为了提高代码的可读性。这是一个被广泛采用的约定,你应该遵循它,以便任何使用你的代码的人都能轻松理解它

#这是定一个的第一个处理函数
def greet(name):
    return "Hello, " + name + "!" 

#这里是最常用的Interface类
demo = gr.Interface(
    fn=greet,                        #处理函数
    inputs=["text"],                 #输入
    outputs=["text"],                #输出
)

demo.launch(share=True)   #share=True

这样就可以了,是不是很简单?https://821020b45ebc0e257b.gradio.live就是随机生成的公网可访问地址,在你未注册的情况下有效期只有72小时

PS C:xxxxxxx\python> python .\app.py
Running on local URL:  http://127.0.0.1:7860
Running on public URL: https://821020b45ebc0e257b.gradio.live

This share link expires in 72 hours. For free permanent hosting and GPU upgrades, run `gradio deploy` from Terminal to deploy to Spaces (https://huggingface.co/spaces)

额,是不是你的报错了?那是因为你没有安装frpc客户端
报错如下

Could not create share link. Missing file: C:\xxxxxx\AppData\Local\Programs\Python\Python312\Lib\site-packages\gradio\frpc_windows_amd64_v0.2.

Please check your internet connection. This can happen if your antivirus software blocks the download of this file. You can install manually by following these steps:

1. Download this file: https://cdn-media.huggingface.co/frpc-gradio-0.2/frpc_windows_amd64.exe
2. Rename the downloaded file to: frpc_windows_amd64_v0.2
3. Move the file to this location: C:\xxxxx\AppData\Local\Programs\Python\Python312\Lib\site-packages\gradio

按照指引,下载frpc客户端,放到gradio安装目录下就可以了
GitHub

https://github.com/friklogff/frpc_windows_amd64_v0.2

也可以到百度网盘下

链接:https://pan.baidu.com/s/1NP24j1ZNegzh0R65V4flbg?pwd=0l08 
提取码:0l08

下载好,按照人家的提示操作就好

1. Download this file: https://cdn-media.huggingface.co/frpc-gradio-0.2/frpc_windows_amd64.exe
2. Rename the downloaded file to: frpc_windows_amd64_v0.2
3. Move the file to this location: C:\xxxxx\AppData\Local\Programs\Python\Python312\Lib\site-packages\gradio

按步骤操作后,重启你的应用个就可以了。

Gradio内网穿透原理

在这里插入图片描述

  1. 创建公共链接:Gradio首先会尝试在网络上生成一个可以被外部访问的链接,以便用户可以直接通过浏览器等方式与模型进行交互。这个链接是一个统一资源定位符(URL),类似于https://821020b45ebc0e257b.gradio.live。

  2. frpc 实现反向代理:Gradio 利用了 frpc 的反向代理功能,将本地的服务暴露到公共网络上。通常情况下,frpc会创建一个随机的临时端口,并将该端口映射到 Gradio 提供的本地服务上。这样,远程用户可以通过访问这个公共端口使用模型。

  3. 启动本地服务:Gradio 会在本地启动一个服务器,该服务器会监听来自 frpc映射的临时端口的请求。当远程用户访问公共链接时,请求将通过反向代理转发到本地服务。

  4. 反馈预测结果:一旦收到请求,Gradio会将请求的数据传递给模型进行预测,并将预测结果返回给用户。这个过程通常是实时的,用户可以即时看到模型的响应。

  5. 关闭临时端口:当用户结束访问或链接超时时,Gradio 会自动关闭 frpc 创建的临时端口,从而保证安全性和资源的释放。

Frpc工作原理

FRP(Fast Reverse Proxy)是一种高性能的内网穿透和反向代理软件,它支持TCP、UDP、HTTP、HTTPS等多种协议,能够将内网服务安全便捷地暴露到公网上。FRP由客户端(frpc)和服务端(frps)两个组件组成,通常服务端部署在具有公网IP的机器上,客户端部署在需要穿透的内网服务所在的机器上。

工作原理如下:

服务端运行并监听一个主端口,等待客户端的连接。
客户端连接到服务端的主端口,并告知服务端要监听的端口和转发类型。
服务端fork新的进程监听客户端指定的端口。
外网用户连接到客户端指定的端口,服务端通过与客户端的连接将数据转发到客户端。
客户端进程再将数据转发到本地服务,实现内网对外暴露服务的能力。

在实际使用中,FRP可以根据端口号进行对应的转发,例如通过自定义域名访问内网的Web服务或安全的SSH内网穿透 。此外,FRP还提供了一些高级功能,如P2P通信、使用系统服务管理等 。

FRP是一个开源项目,可以在GitHub上找到其源代码和文档 。用户可以根据需要自行搭建或使用现成的服务。总的来说,FRP是一个功能强大、灵活易用的内网穿透工具,适用于需要远程访问内网服务的场景。


总结

本章先介绍了Gradio的内网穿透能力,这个可以不看,先学习后面的基础组件的使用,等到应用发布时再来学习。

### 关于Gradio框架中的interval 2-8B配置与使用 在探讨Gradio框架内的`interval 2-8B`这一特定参数之前,有必要先理解Gradio作为一个用于快速创建机器学习模型和数据科学项目的交互式界面工具的作用。然而,在官方文档以及常见实践案例中,并未直接提及名为`interval 2-8B`的具体设定[^1]。 通常情况下,涉及时间间隔或更新频率的配置项会在API接口或者组件属性中体现出来。对于Gradio而言,更多关注的是如何定义输入输出组件、自定义样式、集成不同类型的模型预测功能等方面的内容。如果存在类似于“interval”的概念,则更可能是指定某些后台任务执行周期或是前端UI刷新速率等特性。 针对假设性的`interval 2-8B`场景应用到Gradio环境中: #### 自定义定时器实现方法 虽然不存在确切名称匹配的功能选项,但是可以借助Python编程技巧来模拟类似的机制。例如通过引入第三方库如`schedule`配合Flask服务器端逻辑控制页面加载行为;或者是利用JavaScript编写客户端脚本来处理浏览器内元素显示隐藏的时间管理。 ```python import gradio as gr from threading import Thread import time def update_output(): while True: # 模拟每两秒至八秒之间随机延迟后触发一次函数调用 sleep_time = random.uniform(2, 8) time.sleep(sleep_time) with app.lock: output_text.value = f"Updated at {time.strftime('%Y-%m-%d %H:%M:%S')}" app = gr.Blocks() with app: output_text = gr.Textbox(label="Dynamic Content", value="") thread = Thread(target=update_output) thread.start() app.launch() ``` 此代码片段展示了怎样在一个基于Gradio的应用程序里构建具有不定期变化特性的动态内容展示区。这里采用多线程技术确保主线程能够继续响应用户的其他请求而不被阻塞。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叶与花语

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值