最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

http通過StreamingHttpResponse完成連續(xù)的數(shù)據(jù)傳輸長鏈接方式

 更新時間:2022年02月12日 09:29:34   作者:Hayley-L  
這篇文章主要介紹了http通過StreamingHttpResponse完成連續(xù)的數(shù)據(jù)傳輸長鏈接方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

http通過StreamingHttpResponse完成連續(xù)的數(shù)據(jù)傳輸長鏈接

問題

http服務之間傳遞結果流

一個由flask封裝起來的算法,一個由django封裝的后臺,我希望在django里通過requests調(diào)用flask的算法接口,flask可以分析一幀返回一幀結果,追求分析結果的實時返回,而不是完全分析完再完整返回結果

為了能完整返回結果,暫時想到的模式有以下三種:

  • 一問一答:等待完整的分析結果,然后返回,最不濟就用這種
  • 我要你給(長鏈接):flask返回一個generator,django取next就得到下一個的結果
  • 你有你給(理想,長鏈接):建立長鏈接,flask每分析出一幀結果,就返回

一次結果,直到分析結束,關閉連接

看到flask中有個flask_socketio建立socket連接,還沒有實驗

暫時用StreamingHttpResponse,generater能實現(xiàn)實時分析的感覺,屬于第三種模式(你有你給)

django的StreamingHttpResponse可以返回generater,request調(diào)用返回generate的接口的時候,通過contextlib 的closing對流進行處理:

輸出

#django 算法端,輸出流
from django.http import StreamingHttpResponse
def stream_response(request): ? ? ? ? ? ? ? ? ?
? ? def generate(): ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? for i in range(10): ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? print(i) ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? yield 'hi ' + str(i) ? ? ? ? ? ? ??
? ? ? ? ? ? print('sleep 3') ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? time.sleep(1) ? ? ? ? ? ? ? ? ? ? ?
? ? return StreamingHttpResponse(generate(), )?
#flask 算法端,輸出流
@app.route('/re', methods=('POST', ))
def re():
? ? @flask.stream_with_context
? ? def generate():
? ? ?? ?for i in range(10): ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? print(i) ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? yield 'hi ' + str(i)
? ? ? ? ?? ?print('sleep 3') ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? time.sleep(1)
? ? return flask.Response(generate())

輸入

不區(qū)分flask,django,都可以通過request,contextlib 實現(xiàn)

#flask 算法端
@app.route('/test', methods=['POST', 'GET'])
def test():
? ? url = 'http://172.16.68.151:8000/test2'
? ? from contextlib import closing
? ? with closing(requests.get(url, stream=True)) as r1:
? ? ? ? for i in r1.iter_content():
? ? ? ? ? ? print(i)

StreamingHttpResponse和HttpResponse

在修改以前的文件下載功能時,發(fā)現(xiàn)一個文件有5G,用HttpResponse實現(xiàn)時,服務器返回502錯誤,查看nginx log時,發(fā)現(xiàn)nginx log記錄的是: upstream prematurely closed connection while reading response header from upstream。應該是nginx服務器從上游獲取數(shù)據(jù)時超時了。

查了很多辦法,修改了nginx的配置,但是仍然超時。

絕望之下,查了一下Django的文檔,發(fā)現(xiàn)了StreamingHttpResponse,試了一下效率提高了很多。

后來仔細查了一下發(fā)現(xiàn)HttpResponse在使用文件迭代器時:

HttpResponse will consume the iterator immediately, store its content as a string, and discard it.

HttpResponse會直接使用迭代器對象,將迭代器對象的內(nèi)容存儲城字符串,然后返回給客戶端,同時釋放內(nèi)存。可以當文件變大看出這是一個非常耗費時間和內(nèi)存的過程。

而StreamingHttpResponse是將文件內(nèi)容進行流式傳輸,

StreamingHttpResponse在官方文檔的解釋是:

The StreamingHttpResponse class is used to stream a response from Django to the browser. You might want to do this if generating the response takes too long or uses too much memory.

這是一種非常省時省內(nèi)存的方法。但是因為StreamingHttpResponse的文件傳輸過程持續(xù)在整個response的過程中,所以這有可能會降低服務器的性能。

參考文檔

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • python groupby函數(shù)實現(xiàn)分組后選取最值

    python groupby函數(shù)實現(xiàn)分組后選取最值

    這篇文章主要介紹了python groupby函數(shù)實現(xiàn)分組后選取最值,文章圍繞主題相關資料展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-06-06
  • python如何輸出反斜杠

    python如何輸出反斜杠

    在本篇內(nèi)容中小編給大家整理了一篇關于python怎么輸出反斜杠的相關基礎文章,有興趣的朋友們可以學習參考下。
    2020-06-06
  • Python實現(xiàn)實時跟隨微信窗口移動的GUI界面

    Python實現(xiàn)實時跟隨微信窗口移動的GUI界面

    Python寫一些簡單的GUI界面也是非常簡單的,并且Python有著豐富的庫,這些庫可以很方便我們?nèi)ゲ僮鱓indows系統(tǒng)。本文就來用Python編寫一個實時跟隨微信窗口移動的GUI界面吧
    2023-04-04
  • Python與AI分析時間序列數(shù)據(jù)

    Python與AI分析時間序列數(shù)據(jù)

    預測給定輸入序列中的下一個是機器學習中的另一個重要概念.本章為您提供有關分析時間序列數(shù)據(jù)的詳細說明,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2022-05-05
  • Python辦公自動化Word轉(zhuǎn)Excel文件批量處理

    Python辦公自動化Word轉(zhuǎn)Excel文件批量處理

    這篇文章主要為大家介紹了Python辦公自動化Word轉(zhuǎn)Excel文件批量處理示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • 詳解python中的三種命令行模塊(sys.argv,argparse,click)

    詳解python中的三種命令行模塊(sys.argv,argparse,click)

    這篇文章主要介紹了python中的三種命令行模塊(sys.argv,argparse,click)的相關資料,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-12-12
  • Python4種配色方案詳解(適合科研的配色)

    Python4種配色方案詳解(適合科研的配色)

    配色的選擇是在我們論文文章畫圖過程中經(jīng)常面臨的一個問題,下面這篇文章主要介紹了Python4種配色方案的相關資料,感興趣的朋友一起看看吧
    2020-02-02
  • Python 圖像處理: 生成二維高斯分布蒙版的實例

    Python 圖像處理: 生成二維高斯分布蒙版的實例

    今天小編就為大家分享一篇Python 圖像處理: 生成二維高斯分布蒙版的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • pytorch+lstm實現(xiàn)的pos示例

    pytorch+lstm實現(xiàn)的pos示例

    今天小編就為大家分享一篇pytorch+lstm實現(xiàn)的pos示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • 使用 Python 處理3萬多條數(shù)據(jù)只要幾秒鐘

    使用 Python 處理3萬多條數(shù)據(jù)只要幾秒鐘

    在工作中經(jīng)常遇到大量的數(shù)據(jù)需要整合、去重、按照特定格式導出等情況。這篇文章主要介紹了使用 Python 處理3萬多條數(shù)據(jù)只要幾秒鐘的相關知識,需要的朋友可以參考下
    2020-01-01

最新評論

青冈县| 河源市| 嘉定区| 元阳县| 大邑县| 乌拉特后旗| 仁怀市| 承德市| 简阳市| 泰兴市| 保德县| 苍南县| 永兴县| 罗定市| 武定县| 英德市| 新邵县| 文化| 晋中市| 右玉县| 安达市| 甘孜县| 遂宁市| 西乡县| 炎陵县| 新和县| 广德县| 启东市| 尼玛县| 无棣县| 利辛县| 井陉县| 邵东县| 天峨县| 台前县| 洛浦县| 绥化市| 华蓥市| 虹口区| 宜昌市| 延吉市|