Flask gevent – SSE超时使用nginx uwsgi

发布时间:2019-09-01 发布网站:脚本之家
脚本之家收集整理的这篇文章主要介绍了Flask gevent – SSE超时使用nginx uwsgi脚本之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在编写一个基于Flask,gevent和Redis的webapp,它使用Server Sent Events.

我在StackOverflow上经历了几个问题,并在google上进行了大量搜索,但没有找到适合我的合适答案,所以在这里我要求社区帮助.

问题在于生产堆栈,nginx uwsgi:浏览器定期接收更新(并按预期刷新)大约30秒.之后,连接超时,浏览器不再接收任何更新,直到手动重新加载页面.

由于整个东西在localhost上完美运行,使用标准的烧瓶开发服务器(闲置30分钟后连接活动),我很确定问题出在uwsgi / nginx配置上.我已经尝试了所有我能想到的nginx / uwsgi设置,但没有任何东西,它会在几秒钟后保持超时.

有人有线索吗?

这里有一些代码和配置.

nginx相关的生产设置:

location / {
include uwsgi_params;
uwsgi_pass unix:/tmp/myapp.sock;
uwsgi_param UWSGI_PYHOME /srv/www/myapp/venv;
uwsgi_param UWSGI_CHDIR /srv/www/myapp;
uwsgi_param UWSGI_MODULE run;
uwsgi_param UWSGI_CALLABLE app;
uwsgi_buffering off;
proxy_set_header Connection '';
proxy_http_version 1.1;
chunked_transfer_encoding off;
proxy_cache off;
}

uwsgi制作设置

[uwsgi]
base = /srv/www/myapp
app = run
home = %(base)/venv
pythonpath = %(base)
socket = /tmp/%n.sock
gevent = 100
module = %(app)
callable = app
logto = /srv/www/myapp-logs/uwsgi_%n.log

这是模板执行订阅频道的javascript(暂时,模板只是在服务器推送一些数据时刷新整个页面)