Python Django PDFKIT - [Errno 9]错误的文件描述符

时间:2015-06-21 15:24:38

标签: python django iis pdfkit

我使用pdfkit和wkhtmltopdf生成pdf文档。当我生成第一个pdf时,一切都很顺利。当我快速(在5秒内)生成另一个我得到错误[Errno 9]坏文件描述符。如果我关闭错误(退回浏览器)并再次打开,它将创建pdf。

my 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上运行此站点,从命令行(python manage.py runserver)运行时,错误不存在。

有关如何处理此错误的任何指导都很棒。

2 个答案:

答案 0 :(得分:6)

  

当我快速(在5秒内)生成另一个

这一点表明你的代码是完美的,问题在于你的浏览器拒绝了彼得建议的URL。

错误的原因很可能在于file buffer flush。考虑在适当的地方冲洗缓冲区。

答案 1 :(得分:3)

由于没有进一步的信息,我会将我的评论转换为答案......

最有可能的问题是,当您尝试快速重新加载(通过from_url)时,Web服务器会拒绝您的URL,或者您在访问要创建的本地文件时遇到问题。

您可以尝试通过将False作为输出文件名直接写入变量来消除后者 - 例如pdf = pdfkit.from_url('google.com', False)

如果这不能解决问题,那么您的问题几乎肯定是服务器拒绝了URL - 因此您需要查看该服务器上的诊断信息。