开发者社区 > 云原生 > Serverless > 正文

使用Server Send Events时怎么调整函数的缓冲区大小呢?已经设置了proxy_buff

使用Server Send Events时怎么调整函数的缓冲区大小呢?已经设置了proxy_buffering off;用的是nginx 函数服务。

展开
收起
巴拉巴拉巴拉 2023-03-13 16:55:33 492 0
4 条回答
写回答
取消 提交回答
  • 这个应该不支持,websocket 是支持的。

    此答案来自钉钉群“阿里函数计算官网客户"

    2023-03-13 18:29:34
    赞同 展开评论 打赏
  • 天下风云出我辈,一入江湖岁月催,皇图霸业谈笑中,不胜人生一场醉。

    ServerSocket的ReceiveBuf函数需要指定接受数据的起始地址,你就把新申请的缓冲区地址指定就OK了

    1、申请缓冲区 FBufSize := BufSize; //这里的BufSize为要指定的缓冲区大小 GetMem(FReceiveBuf,FBufSize); //分配内存 FCurReceiveBuf := FReceiveBuf; //当前接收数据的位置初始化为缓冲区首地址 FPosition := 0; //当前位置初始化为0

    2、接收数据:

    try //接收数据到缓冲区 while Socket.ReceiveLength > 0 do begin MaxReceive := FBufSize - FPosition; //MaxReceive为当前可接受数据的最大值 //接收数据不得超过缓冲剩余大小 if Socket.ReceiveLength > MaxReceive then ReceiveLen := MaxReceive else ReceiveLen := Socket.ReceiveLength; FCurReceiveBuf := PByte(Integer(FReceiveBuf) + FPosition); //接收地址移动 //接收数据追加到缓冲区中 Socket.ReceiveBuf(FCurReceiveBuf^,ReceiveLen);

    //置当前指针位置 FPosition := FPosition + ReceiveLen; //对缓冲区数据进行解析 AnalyzeBuf; end; except ClearBuf; end;

    2023-03-13 17:11:07
    赞同 展开评论 打赏
  • 月移花影,暗香浮动

    在使用Server Sent Events时,可以使用response.buffer_size属性来调整函数的缓冲区大小。

    在Flask中,可以通过设置Flask应用的response_class属性,将其替换成自定义的Response类,然后在自定义的Response类中设置缓冲区大小。

    示例代码如下:

    from flask import Flask, Response
    
    class CustomResponse(Response):
        def __init__(self, *args, **kwargs):
            super().__init__(*args, **kwargs)
            self.headers['X-Accel-Buffering'] = 'no'
    
        @classmethod
        def force_type(cls, response, environ=None):
            if isinstance(response, basestring):
                response = Response(response)
            if isinstance(response, Response):
                response.headers['X-Accel-Buffering'] = 'no'
            return super(CustomResponse, cls).force_type(response, environ)
    
    app = Flask(__name__)
    app.response_class = CustomResponse
    

    在这个示例代码中,CustomResponse类继承自Flask默认的Response类,添加了一个初始化方法,用来设置X-Accel-Buffering响应头,禁用Nginx的缓冲机制。同时,force_type方法被重载,以确保Response对象的响应头也会被正确设置。

    2023-03-13 17:11:06
    赞同 展开评论 打赏
  • 公众号:网络技术联盟站,InfoQ签约作者,阿里云社区签约作者,华为云 云享专家,BOSS直聘 创作王者,腾讯课堂创作领航员,博客+论坛:https://www.wljslmz.cn,工程师导航:https://www.wljslmz.com

    proxy_buffering off这个设置为off,那么proxy_buffers和proxy_busy_buffers_size这两个指令将会失效。但是无论proxy_buffering是否开启,proxy_buffer_size都是生效的。

    2023-03-13 17:01:33
    赞同 展开评论 打赏
问答分类:
问答地址:

快速交付实现商业价值。

热门讨论

热门文章

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载