从零到分享:用 Python 开发 Web 服务并通过 DevBridge 隧道公网暴露

举报
yd_269944482 发表于 2026/11/09 01:27:34 2026/11/09
【摘要】  2026-11-09 · 实战记录## 背景想在华为云 AI 开发者空间里快速搭建一个 Python Web 服务,并把它分享给团队外部成员直接访问——不用买服务器、不用配域名、不用开公网端口。这篇文章记录了从写代码到公网分享的完整过程。整个过程分四步:**编写代码 → 启动服务 → DevBridge 隧道分享 → 提交到 GitCode**。---## 第一步:编写 Python Fl...

 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) 环境中。*

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。