Ngrok快速将你的本地Streamlit应用创建一个公共的 URL,供外网访问

目录

  • 1 Ngrok介绍
  • 2 Ngrok 的工作原理
  • 3 Ngrok安装
  • 4 启动Streamlit应用
  • 5 Ngrok搭建外网访问

1 Ngrok介绍

Ngrok 是一个开源工具和商业服务,可以为你的本地应用创建一个安全的公共 URL,使其能够通过互联网访问,而无需复杂的网络配置(例如端口转发)。它通过在你的本地计算机和互联网之间创建一个隧道,让外部用户能够访问你的本地服务器。

2 Ngrok 的工作原理

  1. Ngrok 客户端会运行在你的本地计算机上。
  2. 它将你的本地服务(例如,运行在 localhost:8501 的 Streamlit 应用)映射到一个远程的 Ngrok 隧道服务器
  3. Ngrok 隧道服务器会为你的本地服务生成一个公共 URL(例如 https://.ngrok.io)。
  4. 外部用户通过这个公共 URL 访问你的本地服务,Ngrok 会将请求转发到你的本地服务器

3 Ngrok安装

首先去Ngrok官网下载适合你操作系统的版本。解压下载的文件,并将可执行文件放到系统的 PATH 中,或者直接运行解压目录中的文件。如下是macOS操作系统解压方式:

sudo unzip ~/Downloads/ngrok-v3-stable-darwin-amd64.zip -d /usr/local/bin

然后去官网注册个免费账户,得到你的 Authtoken再运行如下命令将你的authtoken配置到ngrok.yml中:

ngrok config add-authtoken 2pbxyvbX4sZ1c6qGBAds0KW2CF0_2znuhidKKsLEyBSYKfnz

4 启动Streamlit应用

接下来,我们来写一个简单的Streamlit应用,这个应用就是用户从输入一个query,后端程序将用户输入的query从axiv检索相关的论文,把论文和链接返回给用户界面。我们代码search_arxiv.py如下:

import arxiv
import streamlit as stdef fetch_papers(query, max_results=10):"""使用 arXiv API 检索相关论文"""search = arxiv.Search(query=query,max_results=max_results,sort_by=arxiv.SortCriterion.Relevance)papers = []for result in search.results():paper_info = {"title": result.title,"summary": result.summary,"authors": [author.name for author in result.authors],"published": result.published,"url": result.entry_id}papers.append(paper_info)return papers# Streamlit 应用
st.title("学术论文检索助手")
query = st.text_input("请输入学术关键词:", "")if query:with st.spinner("正在检索相关论文..."):papers = fetch_papers(query)if papers:st.success(f"检索到 {len(papers)} 篇论文!")st.subheader("相关论文")for paper in papers:st.write(f"[{paper['title']}]({paper['url']})")else:st.error("未找到相关论文,请尝试其他关键词。")

我们启动Streamlit 应用:

streamlit run your_app.py

默认监听地址是 localhost:8501。输出如下:
在这里插入图片描述

我们也可以去修改配置文件,修改地址,在~/.streamlit/config.toml 目录下,修改配置文件如下:

在这里插入图片描述
应用会监听并接受来自任何网络接口的连接请求,而不仅仅是本机,当运行streamlit,输出结果如下:
在这里插入图片描述
我们打开这个网址,我们可以看到我们刚才写的一个简单应用界面如下:
在这里插入图片描述
可以看到Streamlit是十分强大的。几行代码就可以展示一个比较好的用户界面, 而且可以实时监控用户界面,我们输入关键词“LLM in recommend"。界面得到结果如下:
在这里插入图片描述

5 Ngrok搭建外网访问

接下来我们启动Ngrok,将流量转发到本地的 8501 端口:

ngrok http 8501

我们可以看到如下信息:
在这里插入图片描述
其中 https://6de1-103-1-158-36.ngrok-free.app 就是Ngrok 生成的== 一个可以供外网访问的地址URL==。从外网我们打开这个网址也是可以访问的。我们也可以使用Ngrok的高级功能(部分需要付费计划),自定义子域名等,Ngrok免费版和付费版对比如下:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/34004.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

青龙面板的定时规则

6个数字的定时规则, 第1个是秒,第2个是分,第3个是时,第4个是每月的哪日,第5个是哪月,第6个是每周的周几。 数字之间空格隔开。 不限制的用*号替代,定期的时间用“?”替代,间隔运…

XSS(DOM)-HIGH错误总结

HIGH就不从简单的开始。 我们直接闭合HTML标签绕过 ></option></select><img srcx:alert(alt) οnerrοreval(src) altxss> 没有变化 这里应该是后端的问题&#xff0c;试试锚点注入 English#<script>alert(xss)</script> 这里不知道什么…

深度学习图像增强介绍

目录 一、引言二、常用数据增广方法三、图像变换类3.1 AutoAugment3.2 RandAugment 四、图像裁剪类4.1 Cutout4.2 RandomErasing4.3 HideAndSeek 五、图像混叠5.1 Mixup5.2 Cutmix 六、结论 一、引言 在图像分类任务中&#xff0c;图像数据的增广是一种常用的正则化方法&#…

MySQL导入.sql文件后数据库乱码问题

问题分析&#xff1a; 当导入.sql文件后&#xff0c;发现数据库中的备注出现乱码&#xff0c;通常是由于一下原因导致&#xff1a; 字符集不匹配&#xff1a;.sql文件、MySQL服务器、客户端连接使用的字符集不一致。备注内容编码问题&#xff1a;备注内容本身的编码格式与数据…

云数据库 RDS

云数据库 RDS&#xff08;Relational Database Service&#xff0c;关系型数据库服务&#xff09;是由阿里云提供的一种托管的关系型数据库服务&#xff0c;旨在简化数据库的部署、管理和维护工作&#xff0c;帮助用户快速构建、部署和管理关系型数据库。RDS 提供了包括 MySQL、…

图社区发现算法-Louvain算法

Louvain社区发现算法出自2008年的论文《Fast unfolding of communities in large networks》&#xff0c;其名字是根据作者所在的城市来命名的。它基于模块度优化来实现社区划分。 准备知识 模块度(modularity)是用来衡量社区内部的链接密度相比社区之间的链接密度的介于-1和…

Elasticsearch之索引的增删改查(6.x版本)-yellowcong

1. 节点信息查看 #查看集群健康情况 curl -X GET localhost:9200/_cat/health?v&pretty#查看节点信息 curl -X GET localhost:9200/_cat/nodes?v&pretty 2. 索引管理 在es中&#xff0c;索引就相当于是mysql中的库了。 #查看索引列表 curl -X GET localhost:9200/…

技术栈4:Docker入门 Linux入门指令

目录 1.Linux系统目录结构 2.处理目录的常用命令 3.Docker概述 4.Docker历史 5.Docker基本组成 6.Docker底层原理 7.Docker修改镜像源 8.Docker基本命令 在学习docker之前我们先要熟悉Linux系统&#xff0c;推荐阅读&#xff1a;Linux笔记&#xff08;狂神说&#xff0…

UFS文档导航

目录 1、UFS系统模型 2、UFS子系统实现架构 3、Host Controller 4、M-PHY 5、UFS Device 1、UFS系统模型 2、UFS子系统实现架构 3、Host Controller 模块 文档名称 文档描述 Host Controller JESD223D 协议文档&#xff0c;UFS Host Controller Interface DWC_ufshc…

北斗系统:构建天地一体化的高精度定位服务

随着北斗卫星导航系统的全面建成&#xff0c;中国在全球卫星导航领域迈出了坚实的一步。北斗系统不仅提供了全天候、全天时的全球覆盖服务能力&#xff0c;更通过天地一体化的高精度增强服务系统技术&#xff0c;将民用定位精度提升到了新的高度。 北斗系统的高精度服务 北斗…

论文阅读:Omnidirectional Image Super-resolution via Bi-projection Fusion

对于全景图像&#xff08;ODIs&#xff09;的超分辨率的技术有&#xff1a;等矩投影&#xff08;ERP&#xff09;但是这个没有利用 ODIs 的独特任何特性。ERP提供了完整的视场但引入了显著的失真&#xff0c;而立方体映射投影&#xff08;CMP&#xff09;可以减少失真但视场有限…

汽车总线协议分析-FlexRay总线

随着汽车智能化发展&#xff0c;汽车增加安全性和舒适体验的功能增多&#xff0c;用于实现这些功能的传感器、ECU的数量也在持续上升&#xff0c;严重阻碍了线控技术的发展。常用的CAN、LIN等总线由于缺少同步性、确定性和容错性不能满足汽车线控系统(X-by-Wire)的要求。因此&a…

《算法导论》英文版前言To the teacher第4段研习录:有答案不让用

【英文版】 Departing from our practice in previous editions of this book, we have made publicly available solutions to some, but by no means all, of the problems and exercises. Our Web site, http://mitpress.mit.edu/algorithms/, links to these solutions. Y…

AI Agent工作流程:关于是使用 LangGraph 还是 LangChain 进行构建的完整指南

深入了解同一创建者 LangChain 和 LangGraph 的两个库&#xff1a;它们的关键构建块、它们如何处理其功能的核心部分&#xff0c;以及为您的用例在它们之间做出决定 语言模型为用户如何与 AI 系统交互以及这些系统如何通过自然语言相互通信开启了可能性。 在本文中&#xff0c…

qt QPrinter详解

1、概述 QPrinter类是Qt框架中用于打印输出的绘图设备。它表示打印出来的一系列页面&#xff0c;并提供了一组附加功能来管理特定于设备的特性&#xff0c;比如方向和分辨率。QPrinter可以生成PDF文档&#xff0c;也可以将内容发送到打印机进行实际打印。它继承自QPagedPaintD…

腾讯面试:如何解决哈希冲突?

我们面试时经常被问到HashMap是怎么解决哈希冲突的&#xff0c;很多同学对其含糊其词、一知半解。因此小编对相关知识进行了总结&#xff0c;希望帮助读者加深对其理解。 哈希表就是通过散列函数将键映射到定值&#xff0c;简单来说就是一个键对应一个值。 而通过散列函数映射…

数组中的四个函数(数组实现)

strlen&#xff08;输出长度&#xff09; #include <stdio.h> #include <string.h> #include <stdlib.h> int main(int argc, const char *argv[]) { char str[100]; int count 0; // 提示用户输入字符串 printf("请输入一个字符串: &qu…

大数据-241 离线数仓 - 电商核心交易 业务数据表结构 订单、产品、分类、店铺、支付表

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; Java篇开始了&#xff01; 目前开始更新 MyBatis&#xff0c;一起深入浅出&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff0…

Linux-命令

文章目录 一. Linux的目录1. Linux的目录结构2. Linux的路径的描述方式3. home目录,当前工作目录4. 栗子 二. Linux命令入门1. 什么是命令,命令行2. Linux命令基础格式 三. 目录相关命令1. ls:展示当前工作目录下的内容2. cd:切换工作目录3. pwd:输出当前所在的工作目录4. 相对…

SpringBoot该怎么使用Neo4j - 优化篇

文章目录 前言实体工具使用 前言 上一篇中&#xff0c;我们的Cypher都用的是字符串&#xff0c;字符串拼接简单&#xff0c;但存在写错的风险&#xff0c;对于一些比较懒的开发者&#xff0c;甚至觉得之间写字符串还更自在快速&#xff0c;也确实&#xff0c;但如果在后期需要…