From 194bb9513efd70d8ef87cc3d626ebd2846579110 Mon Sep 17 00:00:00 2001 From: alfredhuang Date: Tue, 2 Sep 2025 16:55:36 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20cloud=20run=20sse=20de?= =?UTF-8?q?mo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cloudbaserun/sse-demo/.dockerignore | 9 +++ cloudbaserun/sse-demo/Dockerfile | 21 +++++++ cloudbaserun/sse-demo/README.md | 23 ++++++++ cloudbaserun/sse-demo/app.py | 78 ++++++++++++++++++++++++++ cloudbaserun/sse-demo/requirements.txt | 2 + 5 files changed, 133 insertions(+) create mode 100644 cloudbaserun/sse-demo/.dockerignore create mode 100644 cloudbaserun/sse-demo/Dockerfile create mode 100644 cloudbaserun/sse-demo/README.md create mode 100644 cloudbaserun/sse-demo/app.py create mode 100644 cloudbaserun/sse-demo/requirements.txt diff --git a/cloudbaserun/sse-demo/.dockerignore b/cloudbaserun/sse-demo/.dockerignore new file mode 100644 index 00000000..c678b1e0 --- /dev/null +++ b/cloudbaserun/sse-demo/.dockerignore @@ -0,0 +1,9 @@ +Dockerfile +README.md +*.pyc +*.pyo +*.pyd +__pycache__ +.pytest_cache +env +.DS_Store \ No newline at end of file diff --git a/cloudbaserun/sse-demo/Dockerfile b/cloudbaserun/sse-demo/Dockerfile new file mode 100644 index 00000000..7dc2acd7 --- /dev/null +++ b/cloudbaserun/sse-demo/Dockerfile @@ -0,0 +1,21 @@ +FROM python:3.9-slim + +# 设置工作目录 +WORKDIR /app + +# 安装依赖 +COPY requirements.txt . +RUN pip install --no-cache-dir -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ + +# 复制应用代码 +COPY app.py . + +# 暴露端口 +EXPOSE 5000 + +# 设置环境变量 +ENV FLASK_APP=app.py +ENV FLASK_ENV=production + +# 启动命令 +CMD ["python", "app.py"] \ No newline at end of file diff --git a/cloudbaserun/sse-demo/README.md b/cloudbaserun/sse-demo/README.md new file mode 100644 index 00000000..b338efcd --- /dev/null +++ b/cloudbaserun/sse-demo/README.md @@ -0,0 +1,23 @@ +# CloudBase 云托管 SSE 示例 + +## 命令行部署 + +在此目录下运行: + +```sh +tcb cloudrun deploy -e your-env-id +``` + + +## 控制台部署 + +使用文件夹上传方式选择此文件夹并上传,配置服务端口为 5000 + + +## 测试访问 + +服务部署成功后,访问服务域名可以查看提示:服务器已启动,SSE 端点可通过 /stream 访问。 + +访问: 服务域名/stream 路径;可以查看到持续不断的内容输出;输出内容为服务端通过 SSE 协议持续返回到前端。 + + diff --git a/cloudbaserun/sse-demo/app.py b/cloudbaserun/sse-demo/app.py new file mode 100644 index 00000000..7d5dca55 --- /dev/null +++ b/cloudbaserun/sse-demo/app.py @@ -0,0 +1,78 @@ +from flask import Flask, Response +import time +import json +import datetime +from flask_cors import CORS + +app = Flask(__name__) +CORS(app, resources={r"/*": {"origins": "*"}}) # 允许所有来源的跨域请求 + +@app.route('/stream') +def stream(): + def event_stream(): + count = 0 + while True: + # 创建事件数据 + current_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") + data = { + "count": count, + "time": current_time, + "message": f"这是第 {count} 条 SSE 消息" + } + + # 按照 SSE 协议格式发送数据 + yield f"id: {count}\n" + yield f"event: message\n" + yield f"data: {json.dumps(data, ensure_ascii=False)}\n\n" + + count += 1 + time.sleep(2) # 每2秒发送一次消息 + + # 设置响应头,指定内容类型为 text/event-stream + return Response(event_stream(), mimetype="text/event-stream") + +@app.route('/') +def index(): + # 返回简单的 HTML 页面,用于测试 SSE + return """ + + + + Flask SSE 服务器 + + + + + +

Flask SSE 服务器

+
+

服务器已启动,SSE 端点可通过 /stream 访问。

+

客户端可以连接到 http://localhost:5000/stream 接收事件。

+
+ + + """ + +if __name__ == '__main__': + app.run(debug=True, host='0.0.0.0', port=5000) \ No newline at end of file diff --git a/cloudbaserun/sse-demo/requirements.txt b/cloudbaserun/sse-demo/requirements.txt new file mode 100644 index 00000000..70114e3f --- /dev/null +++ b/cloudbaserun/sse-demo/requirements.txt @@ -0,0 +1,2 @@ +flask +flask-cors \ No newline at end of file From 7d55ec9cbeb80e4f837d1080e328f1684aec4027 Mon Sep 17 00:00:00 2001 From: alfredhuang Date: Tue, 2 Sep 2025 17:16:28 +0800 Subject: [PATCH 2/2] update readme to add cloud run --- readme.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/readme.md b/readme.md index cf47aa71..3512ce80 100644 --- a/readme.md +++ b/readme.md @@ -16,6 +16,7 @@ - [📱 小程序](#-小程序) - [🔄 跨端应用](#-跨端应用) - [⚡ 函数型托管](#-函数型托管) + - [⚡ 云托管](#-云托管) - [🤖 AI Agent 服务](#-ai-agent-服务) - [🔗 MCP Server](#-mcp-server) - [🔧 低代码应用](#-低代码应用) @@ -94,6 +95,13 @@ - [全栈项目](./cloudrunfunctions/fullstack-project) - 云函数全栈项目示例 - [消息中心](./cloudrunfunctions/message-center) - 基于云函数的消息中心示例 +### ⚡ 云托管 + +- [SSE 示例](./cloudbaserun/sse-demo) - 云托管使用 SSE 协议返回内容的示例 +- [Spring Cloud 示例](./cloudbaserun/spring-cloud-docker-demo) - SpringCloud 构建微服务示例 +- [云端开发环境](./cloudbaserun/deploy-code-server) - 云托管部署并运行云端开发环境示例 + + ### 🤖 AI Agent 服务 - [DeepSeek Agent](./cloudrunfunctions/deepseek-agent) - DeepSeek 大模型 Agent 示例