簡體   English   中英

使用 Flask uwsgi 提供 PIL 圖像時嘗試隱式序列轉換

[英]Attempted implicit sequence conversion while serving PIL image using Flask uwsgi

我通過 Flask 提供 PNG 或 SVG 圖像。在本地它工作正常但是當我在 docker 內運行應用程序並發送請求 (POST) 時,我收到以下錯誤:

RuntimeError: Attempted implicit sequence conversion but the response object is in direct passthrough mode.

通過 flask 提供 PIL 圖像的以下代碼:

def serve_image(image: Image, mime_type: FileFormat, download: bool):
    suffix = mime_type.value.split('/')[-1]
    temp_file = tempfile.TemporaryFile(mode='w+b', suffix=suffix)
    if suffix == 'png':
        image.save(temp_file, suffix)
    else:
        # we cant force svg extension in PIL
        image.save(temp_file)
    temp_file.seek(0, 0)
    return send_file(temp_file, mimetype=mime_type.value, as_attachment=download,
                    attachment_filename='img.' + suffix)

我試過使用 BytesIO 也沒有運氣。 環境

Response.implicit_sequence_conversion = False
Response.direct_passthrough = False

要么

@app.after_request
def after_request_func(r):
    r.direct_passthrough = False
    r.implicit_sequence_conversion = False
    return r

也沒有幫助。

問題出在 openapi-core Flask 驗證中,通過創建werkzeug Response 並將 direct passtrough 設置為 False 解決了這個問題。 附件緩存超時等其他標頭必須手動設置。

res = Response(temp_file, direct_passthrough=False, mimetype=mime_type.value)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM