2015-11-27 64 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