当前位置: 首页 > news >正文

Azure Function流式返回

最近用azure function做了一个api和llm交互,需要流式返回。但是默认不支持流返回,搜索了一下。记录。

官方文档:
https://techcommunity.microsoft.com/blog/azurecompute/azure-functions-support-for-http-streams-in-python-is-now-in-preview/4146697

根据文档需要以下步骤:

 前置条件

  1. Azure Functions runtime version 4.34.1, or a later version.
  2. Python version 3.8, or a later supported version.
  3. Python v2 programming model

首先第一点,这个Azure Functions runtime version版本,可以在local.settings.json或者式环境变量里面设置,如果式本地 func start启动的话也需要加PYTHON_ENABLE_INIT_INDEXING这个变量设置为1,如果线上deploy的话就加到application setting里面。

{"IsEncrypted": false,"Values": {"PYTHON_ENABLE_INIT_INDEXING": "1","FUNCTIONS_WORKER_RUNTIME": "python","AzureWebJobsStorage": "UseDevelopmentStorage=true","FUNCTIONS_EXTENSION_VERSION":"4.34.1"}
}

Azure Functions runtime version这个使用的版本可以用 func start --verbose输出更多参数查看到

 第二点python版本不需要多讲。第三点azure programming版本的话就在host.json查看。

{"version": "2.0","logging": {"applicationInsights": {"samplingSettings": {"isEnabled": true,"excludedTypes": "Request"}}},"extensionBundle": {"id": "Microsoft.Azure.Functions.ExtensionBundle","version": "[4.*, 5.0.0)"}
}

 引入新包

pip install azurefunctions-extensions-http-fastapi

编写代码 

from azurefunctions.extensions.http.fastapi import Request, StreamingResponse
import time
import azure.functions as func
from azurefunctions.extensions.http.fastapi import Request, StreamingResponseapp = func.FunctionApp(http_auth_level=func.AuthLevel.ANONYMOUS)def generate_count():"""Generate a stream of chronological numbers."""count = 0while True:yield f"counting, {count}\n\n"count += 1@app.route(route="stream", methods=[func.HttpMethod.GET])
async def stream_count(req: Request) -> StreamingResponse:"""Endpoint to stream of chronological numbers."""try:req_body = await req.json()query = req_body.get('query')logging.info('stream_count get parm: {query}')except Exception:traceback.print_exc()return StreamingResponse(content='Request parm error need {"query":str} ',status_code=500, media_type="text/event-stream")return StreamingResponse(generate_count(), media_type="text/event-stream")

如果是非流返回的api就不能使用默认的func.HttpResponse作为返回了,需要使用JSONResponse

from azurefunctions.extensions.http.fastapi import Request,JSONResponse
@app.route(route="all_u_need_create", methods=[func.HttpMethod.GET])
async def all_u_need_create(req: Request) -> JSONResponse:...return JSONResponse(content=ids,status_code=200)

 测试

这边有点奇怪的是,我使用postman测试一直显示不了返回的流,我一度以为我代码有问题,找了半天,结果用 curl测试没有任何问题.有知道怎么解决的同学也可以给我讲一下。

curl -X GET --data-raw '{"query":"xxxxx"}' -H "Content-Type: application/json" http://localhost:7071/api/all_u_need_search

所以之后的测试就一直用的curl测试了。
 

http://www.lryc.cn/news/506221.html

相关文章:

  • 智能座舱进阶-应用框架层-Jetpack主要组件
  • GitLab分支管理策略和最佳实践
  • 【Unity】【VR开发】实现VR屏幕共享应用的几个重要插件和参考资料分享
  • 数据结构---------二叉树前序遍历中序遍历后序遍历
  • 浏览器引入elasticsearch-head插件
  • 【ELK】Filebeat采集Docker容器日志
  • 异步线程池与CountDownLatch
  • 在图像上显示掩码、框和点的通用函数
  • 基于Matlab的变压器仿真模型建模方法(11):三相三绕组换流变压器的建模仿真
  • 代码随想录算法训练营day46|动态规划part12
  • 【C语言】头文件
  • 蓝桥杯——竞赛省赛国赛题分享
  • 企业内训|阅读行业产品运营实战训练营-某运营商数字娱乐公司
  • 低空无人机产教融合技术详解
  • springboot中Controller内文件上传到本地以及阿里云
  • Chrome 132 版本开发者工具(DevTools)更新内容
  • 使用Python从阿里云物联网平台获取STM32温度数据
  • Spring Boot 声明式事务
  • websocket 局域网 webrtc 一对一 多对多 视频通话 的示例
  • uniapp-微信小程序调用摄像头
  • 鸿蒙学习笔记:用户登录界面
  • 无人机航测系统技术特点!
  • 《算法ZUC》题目
  • 配置flutter 解决andriod studio报错 no device selected
  • docker搭建Redis集群及哨兵(windows10环境,OSS Cluster)
  • 信息化基础知识——数字政府(山东省大数据职称考试)
  • 信息安全实训室网络攻防靶场实战核心平台解决方案
  • Nginx主要知识点总结
  • PySide6程序框架设计
  • 「九」HarmonyOS 5 端云一体化实战项目——「M.U.」应用云侧开发云数据库