2015-06-21 84 views
7

我使用pdfkit和wkhtmltopdf來生成pdf文檔。當我生成第一個pdf時,一切都很好。當我快速(5秒內)生成其他我得到錯誤[Errno 9]錯誤的文件描述符。如果我關閉錯誤(在瀏覽器中退後一步)並再次打開,它將創建pdf。Python Django PDFKIT - [Errno 9]錯誤的文件描述符

我views.py

config = pdfkit.configuration(wkhtmltopdf='C:/wkhtmltopdf/bin/wkhtmltopdf.exe') 
pdfgen = pdfkit.from_url(url, printname, configuration=config) 
pdf = open(printname, 'rb') 

response = HttpResponse(pdf.read()) 
response['Content-Type'] = 'application/pdf' 
response['Content-disposition'] = 'attachment ; filename =' + filename 
pdf.close() 
return response 

也許重要的一點:我運行IIS8這個網站上,從命令行(蟒蛇manage.py runserver命令)運行時錯誤是不存在的。

任何關於如何處理這個錯誤的指導方針都會很棒。

+0

'printname'從哪裏來? –

+1

最有可能的問題是,當您嘗試快速重新加載(通過from_url)或您在嘗試創建本地文件時遇到問題時,您的URL將被Web服務器拒絕。您可以嘗試通過將False作爲輸出文件名直接寫入變量來消除後者 - 例如, pdf = pdfkit.from_url('http://google.com',假) –

+0

你可以發佈錯誤發生時間跨度的服務器日誌嗎? (我知道你說沒有任何錯誤,我只是有一些預感,並希望看到請求信息,以確保我沒有錯之前,建議一個答案) – yuvi

回答

6

當我迅速(5秒內)產生的其他

這一點表明,你的代碼是完美無瑕的,問題在於你的瀏覽器拒絕URL彼得建議。

最可能的錯誤原因在於file buffer flush。考慮在適當的地方沖洗緩衝區。

3

,沒有進一步的信息,提出有前途的,我會我的意見轉化爲一個答案......

最有可能的問題是,你的網址是由Web服務器拒絕當您嘗試快速重裝(通過from_url)或者您在訪問您嘗試創建的本地文件時遇到問題。

您可以試着通過將False作爲輸出文件名直接寫入變量來消除後者 - 例如, pdf = pdfkit.from_url('google.com', False)

如果這樣不能解決問題,您的問題幾乎可以肯定是服務器拒絕了URL - 因此您需要查看該服務器上的診斷信息。

相關問題