[英]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.