Python Django PDFKIT - [Errno 9] Bad file descriptor Python Django PDFKIT - [Errno 9]文件描述符错误

8
我使用pdfkit和wkhtmltopdf来生成PDF文档。第一次生成PDF时一切正常。如果我在5秒内快速生成另一个PDF,就会出现错误[Errno 9] Bad file descriptor。如果我关闭错误(在浏览器中返回)并重新打开,它将创建PDF。
我的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)时,错误不存在。
如何处理此错误的任何指南都将是很好的帮助。

printname 是从哪里来的? - Kevin Christopher Henry
1
最可能的问题是,当您尝试快速重新加载(通过from_url)时,您的URL被Web服务器拒绝,或者您在访问您正在尝试创建的本地文件时遇到问题。您可以尝试通过将False作为输出文件名来直接写入变量来消除后者 - 例如:pdf = pdfkit.from_url('http://google.com',False) - Peter Brittain
你能否发布服务器日志,从错误发生的时间段开始?(我知道你说那里没有任何错误,但我有一些直觉,并想查看请求信息以确保在建议答案之前我没有错) - yuvi
2个回答

6

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

这一点表明你的代码没有问题,问题可能是你的浏览器拒绝了URL,正如Peter所说。

很可能错误的原因在于文件缓冲刷新。请考虑在适当的位置刷新缓冲区。


3
没有更多的信息了解,我将把我的评论转化为答案...
最可能的问题是,在尝试快速重新加载(通过from_url)时,您的URL被Web服务器拒绝,或者您在尝试创建本地文件时遇到问题。
您可以尝试通过将False作为输出文件名来直接写入变量,以消除后者-例如pdf = pdfkit.from_url('google.com',False)。
如果这样做无法解决问题,则几乎可以确定您的问题与服务器拒绝URL有关-因此您需要查看该服务器上的诊断信息。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接