我已经完成了实现print pdf功能。我使用金字塔, wkhtmltopdf 和 jinja2 来生成pdf。它在 gunicorn 中工作正常。但是,当我将其部署到生产环境时(我使用 circusd 在生产环境中运行),该函数将失败,并且不会显示任何错误消息。源代码如下:
pdf_renderer = PDFRenderer()
request = self.request
html = render('test.jinja2' , pdf_data, request)
response = request.response
response.write(pdf_renderer(html))
response.content_type = 'application/pdf'
response.headerlist.append(('Content-Disposition', 'attachment; filename='test.pdf'))
#Everything is ok except the final statement.
#circusd cannot run the statement "return response"
#However, gunicorn can do it
return response
那么,您对我的问题有任何建议或想法吗?它是如此直接,我无法理解为什么它在 gunicorn 中工作正常但在马戏团
中失败答案 0 :(得分:1)
尝试设置content_length
。您正在使用的WSGI服务器可能不支持流式响应(如果您使用.write()
或.app_iter
而未设置content_length
,则会发生这种情况)。对于您的用例,您更乐意设置body
来为您处理所有事情。
response.body = pdf_renderer(html)