从零到分享:用 Python 开发 Web 服务并通过 DevBridge 隧道公网暴露
2026-11-09 · 实战记录
## 背景
想在华为云 AI 开发者空间里快速搭建一个 Python Web 服务,并把它分享给团队外部成员直接访问——不用买服务器、不用配域名、不用开公网端口。这篇文章记录了从写代码到公网分享的完整过程。
整个过程分四步:**编写代码 → 启动服务 → DevBridge 隧道分享 → 提交到 GitCode**。
---
## 第一步:编写 Python Flask Web 服务
### 技术选型
选了 Flask,因为轻量、上手快、适合小型 API 服务。如果你要做更大的项目,FastAPI 也是好选择,但这里我们只需要几个端点,Flask 足够了。
### 代码结构
项目就两个文件,简洁明了:
```
python-web-service/
├── app.py # Flask 应用主文件
└── requirements.txt # 依赖清单
```
### app.py
服务提供 5 个端点:
| 端点 | 方法 | 说明 |
|------|------|------|
| `/` | GET | HTML 落地页,现代风格 CSS |
| `/api/info` | GET | 服务信息(名称、版本、状态) |
| `/api/time` | GET | 当前服务器时间 |
| `/api/echo/<message>` | GET | 回显消息 |
| `/health` | GET | 健康检查 |
核心代码:
```python
import os
from flask import Flask, jsonify
from datetime import datetime
app = Flask(__name__)
SERVICE_NAME = "Python Web Service"
VERSION = "1.0.0"
@app.route('/')
def index():
return LANDING_PAGE
@app.route('/api/info')
def api_info():
return jsonify({
'service': SERVICE_NAME,
'version': VERSION,
'status': 'running'
})
@app.route('/api/time')
def api_time():
now = datetime.now()
return jsonify({
'server_time': now.strftime('%Y-%m-%d %H:%M:%S'),
'timestamp': int(now.timestamp())
})
@app.route('/api/echo/<message>')
def api_echo(message):
return jsonify({'message': message})
@app.route('/health')
def health():
return jsonify({'status': 'ok'})
if __name__ == '__main__':
port = int(os.environ.get('PORT', 8080))
app.run(host='0.0.0.0', port=port)
```
落地页内联了一段 CSS,做了渐变背景、卡片布局、端点列表 hover 效果。不是什么复杂设计,但比默认的白板好看不少。
### requirements.txt
```
flask
```
就一行。简单项目不需要锁定版本号,生产环境建议加上 `flask==3.0.0` 这样的精确版本。
---
## 第二步:启动服务并验证
安装依赖、启动服务:
```bash
pip3 install flask
PORT=8080 python3 app.py
```
启动后用 curl 逐个验证端点:
```bash
$ curl http://127.0.0.1:8080/health
{"status":"ok"}
$ curl http://127.0.0.1:8080/api/info
{"service":"Python Web Service","status":"running","version":"1.0.0"}
$ curl http://127.0.0.1:8080/api/time
{"server_time":"2026-11-09 00:30:21","timestamp":1794155421}
$ curl http://127.0.0.1:8080/api/echo/hello
{"message":"hello"}
```
全部通过。服务在 `0.0.0.0:8080` 上正常运行。
> **小贴士**:`0.0.0.0` 表示监听所有网络接口,不只是 localhost。这一步很关键——如果只监听 `127.0.0.1`,DevBridge 隧道也无法转发流量到你的服务。
---
## 第三步:通过 DevBridge 隧道分享到公网
### 什么是 DevBridge
DevBridge 是华为云提供的开发隧道服务。它的原理很简单:
```
你的本地服务 (localhost:8080)
↓
DevBridge 客户端 (主动出站连接)
↓
华为云中继服务器
↓
公网 URL (任何人可访问)
```
关键在于**出站连接**——不需要在路由器上开端口、不需要公网 IP、不需要配防火墙。DevBridge 客户端主动连到华为云中继服务器,中继服务器再把你分配的公网 URL 的流量转发回来。
### 创建隧道
通过 DevBridge WebUI API 创建隧道,整个过程全自动:
1. **创建隧道**:指定名称、描述、过期时间(默认 72 小时)
2. **配置端口**:指定要暴露的端口(8080)、协议(auto,自动检测 HTTP/HTTPS)、是否允许匿名访问(true,公开分享)
3. **启动托管**:启动 host 进程,建立到中继服务器的连接
### 拿到公网链接
隧道启动后,获得公网访问地址:
```
https://ae4jjsxd-8080.devbridge-s2.hwtunnel.com
```
### 验证公网访问
通过公网链接访问,所有端点完全正常:
```bash
$ curl https://ae4jjsxd-8080.devbridge-s2.hwtunnel.com/health
{"status":"ok"}
$ curl https://ae4jjsxd-8080.devbridge-s2.hwtunnel.com/api/info
{"service":"Python Web Service","status":"running","version":"1.0.0"}
$ curl https://ae4jjsxd-8080.devbridge-s2.hwtunnel.com/api/echo/hello
{"message":"hello"}
```
把链接发给任何人,他们在浏览器打开就能看到落地页,调用 API 也完全正常。
### DevBridge 的几个注意点
- **匿名访问**:开启后任何人有链接就能访问。如果是内部调试,可以关闭匿名访问,改用 token 认证。
- **有效期**:默认 72 小时,最长可设 720 小时(30 天)。到期隧道自动关闭。
- **不是生产环境**:DevBridge 是开发隧道,适合调试、演示、临时分享。正式上线还是需要 ECS + ELB + 域名这套组合。
- **中继域名**:域名由华为云动态分配,不要手动拼接,用 API 读取权威地址。
---
## 第四步:提交代码到 GitCode
### GitCode 授权
首次使用需要 OAuth 授权——扫描二维码完成登录,access token 保存在本地(权限 0600,仅所有者可读)。
### 创建仓库并推送
```bash
git init -b main
git add -A
git commit -m "feat: Python Flask web service with REST API endpoints"
git remote add origin https://gitcode.com/swx1203a/python-web-service.git
git push -u origin main
```
代码已托管在:**https://gitcode.com/swx1203a/python-web-service**
---
## 最终成果
| 项目 | 详情 |
|------|------|
| **代码仓库** | https://gitcode.com/swx1203a/python-web-service |
| **公网访问** | https://ae4jjsxd-8080.devbridge-s2.hwtunnel.com |
| **本地端口** | 8080 |
| **API 端点数** | 5 个 |
| **代码行数** | 154 行(app.py) |
---
## 总结
整个流程下来,几个感受:
1. **开发到分享可以很快**——从写代码到公网可访问,全程不用离开终端,不用配服务器。
2. **DevBridge 解决了"给我看看"的痛点**——开发中经常遇到"你跑起来我看看"的需求,以前要么截图、要么部署到测试服务器,现在一条链接搞定。
3. **安全意识不能少**——DevBridge 匿名访问意味着公网完全开放,分享完记得关隧道;GitCode token 妥善保管,不要提交到代码仓库里。
如果你也在华为云 AI 开发者空间里开发,试试这个流程,确实能省不少事。
---
*本文记录于华为云 AI 开发者空间 (DevStation) 环境中。*
- 点赞
- 收藏
- 关注作者
评论(0)