![](/img/trans.png)
[英]Flask send_file / send_from_directory returning 200 status code but not the file
[英]How to run code after Flask send_file() or send_from_directory()
我有一個基於Flask的網站,用戶可以下載一些PDF文件。
使用Flask的send_file()
和send_from_directory()
可以直接實現。
例如:
@app.route('/downloadreport')
def download_report():
return send_from_directory(
'/reports',
'my_report.pdf',
as_attachment=True)
我想在下載完成后執行一些邏輯(讓我們稱之為after_download()
)。
我嘗試過使用@after_this_request
鈎子。 但看起來send_file()
異步運行,因此@after_this_request
可能會在下載文件之前觸發。
@after_this_request
似乎在下載文件時觸發。 send_file()
這樣的文檔使用WSGI的文件包裝器來實現下載...也許這就是為什么它以異步方式運行? 有沒有辦法調用after_download()
以便在send_file()
完成將文件發送給用戶后保證運行?
你不能。 雖然send_file
在使用開發服務器時使用Flask流式傳輸文件,但它可能(實際上應該是性能)在生產中使用Web服務器(nginx,apache等)和X-SendFile
。 由於Web服務器無法控制應用程序,因此您運氣不佳。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.