2015-11-27 60 views
3

我使用gunicorn和烧瓶的Web服务。我试图让我的头脑运行一个流式路由(不知道这是否是正确的术语)。流动服务器问题与gunicorn和烧瓶和Nginx

我的路线是这样的:

@app.route('/delay') 
def delay(): 
    from time import sleep 
    def delay_inner(): 
     for i in range(10): 
      sleep(5) 
      yield json.dumps({'delay': i}) 
    return Response(delay_inner(), mimetype="text/event-stream") 

我想到的是,服务器将每个delay_inner做了收率随着时间产生输出。但是,我得到的是所有json响应,并且只有在delay_inner完成执行时。

我在这里错过了什么?

- EDIT-- 我已经解决了Flask和Gunicorn的问题,我可以按照预期的方式使用烧瓶服务器运行它,然后转到Gunicorn端口。它按预期流式传输数据。不过,我应该在原文中提到这一点,我也在运行nginx。并没有正确设置流。任何人都可以帮忙吗?

+1

我建议你也发表您的NGINX配置。 – Signus

+0

你玩过http://nginx.org/en/docs/stream/ngx_stream_proxy_module.html吗? –

回答

1

您需要关闭nginx代理缓冲。

location /delay { 
     proxy_pass http://127.0.0.1:8080; 
     proxy_buffering off; 
} 

,如果你相信这是问题的重新加载配置

nginx -s reload 
+0

谢谢!它解决了我的问题! – Ankur