nginx + uwsgi + flask-sse 配置问题

本文探讨了在项目中采用SSE(Server-Sent Events)技术实现服务器主动推送消息到客户端的过程。面对传统HTTP的局限,作者选择了SSE作为解决方案,并分享了在Nginx、uWSGI和Flask环境下配置SSE遇到的挑战及解决思路,包括处理404、504等错误,以及尝试使用nginx-push-stream-module插件提升效率。
摘要由CSDN通过智能技术生成

由于项目需要从服务器发给客户端一个消息,借此来提醒客户端。所以需要可以主动从服务器发送消息给客户端,所以传统的http就不行了。查看了资料以后发现有一些办法可以实现,比如websocket,sse。 websocket 是双向通信,而sse只是单向的。所以最终选择了使用sse,考虑到简洁和资源利用的原因。

 

在实际使用的时候遇到了一些问题,由于是新手。在尝试搞明白nginx uwsgi flask 这3者如何一起工作的过程中发现,最麻烦的就是当自己不理解的时候,不知道这些配置有什么用,所以来来回回几百次,不停的启动,修改,停止,然后再修改... 花了很长时间。

 

由于使用了上述技术栈,所以所有的请求首先会给nginx,可以在nginx中添加各样的过滤,路由规则,还可以做load balance,确实是一个强大的工具。在nginx里面可以配置将请求转发给uwsgi来处理(稍后会有讲具体配置和流程的文章)。在客户端尝试用sse连接的时候,404,504,502 都频繁出现,当我配置了一个单独的 location /sse{} 的时候,不会出现404,但是会频繁504,尝试从上游服务器获取响应超时。查过很多资料,发现有一个大佬写了一个nginx的插件,由于没有时间试,所以暂时记录在此。

 

插件: https://github.com/wandenberg/nginx-push-stream-module

使用这个插件的问题,需要注意里面介绍的nginx版本,在尝试使用时我就遇到了这个问题,由于我的服务器默认用nginx1.6版本,而上述插件版本有点老与我的不兼容(有待考证,到底是版本不兼容,还是没有编译的原因)。

根据 nginx 官方 https://www.nginx.com/resources/wiki/modules/push_stream/ 介绍:

使用这个push-stream-module 需要在编译nginx的过程中加入这个module,才能在实际的配置中使用。

有时间需要试试这个,看看效果如何,会不会比转发sse给uwsgi来处理快一些!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值