Flask gevent – SSE超时使用nginx uwsgi
|
我正在编写一个基于Flask,gevent和Redis的webapp,它使用Server Sent Events. 我在StackOverflow上经历了几个问题,并在google上进行了大量搜索,但没有找到适合我的合适答案,所以在这里我要求社区帮助. 问题在于生产堆栈,nginx uwsgi:浏览器定期接收更新(并按预期刷新)大约30秒.之后,连接超时,浏览器不再接收任何更新,直到手动重新加载页面. 由于整个东西在localhost上完美运行,使用标准的烧瓶开发服务器(闲置30分钟后连接活动),我很确定问题出在uwsgi / nginx配置上.我已经尝试了所有我能想到的nginx / uwsgi设置,但没有任何东西,它会在几秒钟后保持超时. 有人有线索吗? 这里有一些代码和配置. nginx相关的生产设置:
uwsgi制作设置
这是模板执行订阅频道的javascript(暂时,模板只是在服务器推送一些数据时刷新整个页面)
这是我用来返回流数据的代码
最后app就像这样执行(在localhost上DEBUG为True)
最佳答案
在nginx日志文件和firefox js控制台上长时间工作之后,事实证明问题中显示的配置完全没问题.
问题是页面重新加载,此操作会终止并重新初始化连接,因此重试命令没有任何效果. 删除该指令后,即使长时间不活动,SSE更新也会像魅力一样发挥作用. 现在问题是为什么这适用于更简单的开发环境堆栈:-) 编辑 事实上,再过几天,连接仍然超时.我做了一些时间测量,发现超时间隔在30秒到几分钟不活动之间变化. 我的结论是上面的堆栈很好,而亚马逊EC2连接在一些变量不活动时间之后到期,因为我仍在使用微实例. 最后的修复是以下JS片段:
页面重新加载连接断开时(无论什么原因).当服务器发送事件频繁时,预计不会发生重新加载. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- nginx不会在文档根目录的子目录中提供error_page
- ruby-on-rails – Rails 4 nginx unicorn ssl = 502 Bad Ga
- 身份验证 – nginx组http auth
- nginx – 在Amazon上为EC2实例创建一个带故障转移的UDP负载
- ubuntu – 如何通过不同的端口启动nginx(80以外的端口)
- 如何干掉这个Nginx配置?
- ruby-on-rails-使用Capistrano Deploy复制Figaro的applicat
- python – Nginx fastcgi截断问题
- http – Nginx proxy_cache_key $request_body被大型请求体
- 如何在OpenShift上安装Nginx
- 如何设置Nginx忽略Pragma:no-cache
- nginx – 服务器上的高内存使用量 – 无法确定进
- ruby-on-rails – 使用SSL在Nginx后面的Rails 5中
- javascript – Twitter跟踪像素导致MIME类型错误
- php – 对于ansible来说,是一个优雅的重载幂等法
- node.js – socket.io何时使用轮询而不是websock
- nginx – 如何创建这种类型的子域:example.test
- ruby-on-rails – 使用rails,nginx和send_file在
- ruby-on-rails – EC2中的SSL缓慢
- 如何告诉nginx仅为一个vhost管理的域提供https?
