上云无忧 > 文档中心 > 腾讯云云Web函数使用教程 - SSE 协议支持
云函数 SCF
腾讯云云Web函数使用教程 - SSE 协议支持

文档简介:
SSE(Server-sent Events)是 WebSocket 的一种轻量代替方案,是一种服务器端到客户端(浏览器)的单向流式消息推送协议,在 AI 生成对话等场景下较为常见。Web 函数目前已经支持通过 SSE 协议在客户端和函数运行的服务端间建立连接。
*此产品及展示信息均由腾讯云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠
SSE(Server-sent Events)是 WebSocket 的一种轻量代替方案,是一种服务器端到客户端(浏览器)的单向流式消息推送协议,在 AI 生成对话等场景下较为常见。Web 函数目前已经支持通过 SSE 协议在客户端和函数运行的服务端间建立连接。

协议启用方式

SSE 协议默认支持,无需在控制台进行任何配置。

SSE 连接生命周期

在 Web 函数的 SSE 支持下, SSE 一次连接的生命周期,等同于一次函数调用请求。函数实例与连接一一对应,即同一实例在某一时刻仅处理一个 SSE 连接。在有更多连接请求发起时,将启动对应数量的实例进行处理。

操作步骤

创建函数

1. 登录 Serverless 控制台,单击左侧导航栏的函数服务
2. 在主界面上方选择期望创建函数的地域和命名空间,并单击新建,进入函数创建流程。
3. 新建函数页面,选择使用从头开始来新建函数,函数类型选择 Web 函数
4. 本文以运行环境选择 Python 3.7 为例,在函数代码中选择在线编辑,并将以下 app.py 示例代码复制粘贴至函数代码中:
		
import json
import time
from flask import Flask, Response, stream_with_context
app = Flask(__name__)
@app.route('/stream')
def stream_data():
msg = ['SSE','empowering','GPT','applications','!','Happy','chatting','!']
# 可以使用 yield 逐字返回内容
def generate_response_data():
for i,word in enumerate(msg):
json_data = json.dumps(
{'id': i, 'content': word})
yield f"data:{json_data}\n\n"
time.sleep(1)
return Response(stream_with_context(generate_response_data()), mimetype="text/event-stream")
if __name__ == '__main__':
app.run(host='0.0.0.0', port=9000)
5. 单击完成。函数创建完成后,可以在函数列表中查看。

测试函数

可以在本地终端使用 curl 工具发起 SSE 连接,示例命令如下:
		
curl -v -H 'Accept:text/event-stream' {函数暴露的API网关地址}/stream
返回内容如下:
		
> GET /release/stream HTTP/1.1
> Host: XXXXXXXXXXXXXXX.XX.apigw.tencentcs.com
> User-Agent: curl/8.0.1
> Accept: */*
> 'Accept:text/event-stream'
>
< HTTP/1.1 200 OK
< Content-Type: text/event-stream; charset=utf-8
< Transfer-Encoding: chunked
< Connection: keep-alive
< X-Api-RequestId: 22ad36c38536ee65bd07c44cb5311e1d
< Vary: Accept-Encoding
<
data:{"id": 0, "content": "SSE"}
data:{"id": 1, "content": "empowering"}
data:{"id": 2, "content": "GPT"}
data:{"id": 3, "content": "applications"}
data:{"id": 4, "content": "!"}
data:{"id": 5, "content": "Happy"}
data:{"id": 6, "content": "chatting"}
data:{"id": 7, "content": "!"}
* Connection #0 to host XXXXXXXXXXXXXXXXXXX.XX.apigw.tencentcs.com left intact
相似文档
  • 请求单并发: 默认情况下,在调用函数时,云函数会分配一个并发实例处理请求或事件。函数代码运行完毕返回后,该实例会处理其他请求。如果在请求到来时,所有实例都在运行中,云函数则会分配一个新的并发实例。一个并发实例同一时刻仅处理一个事件的运行逻辑,保障每个事件的处理效率和稳定性。
  • 操作场景: 云函数 SCF 于2021年01月29日起进行日志服务升级,接入腾讯云日志服务 CLS,在此日期前创建的函数正在按地域逐渐进行迁移,详情可参见 云函数日志服务变更说明。
  • 云函数 SCF 日志按条写入日志服务 CLS,每次请求的日志由多条组成,每条日志均为固定的 键:值 格式。
  • 说明: 若您的函数于2021年1月29日前创建且尚未进行迁移,如需使用更多日志分析功能,则请参见 日志投递配置(旧),将函数调用日志投递到日志服务 CLS 使用。
  • 说明: 云函数 SCF 于2021年01月29日起全量接入腾讯云 日志服务 CLS,在此之后创建的函数调用日志将默认投递至 CLS,且支持日志实时输出。若您的函数于2021年1月29日前创建,且需进行日志检索与日志投递,请参考本文档使用该功能。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部