我们已经在Heroku上成功运行了PDFkit + Wkhtmltopdf很长一段时间了。突然之间,PDF没有渲染。我把'安静'关掉,看了看我们的日志,看到了这个:
2014-09-05T18:42:17.909469+00:00 app[web.2]: Completed 200 OK in 317ms (Views: 257.1ms | ActiveRecord: 40.4ms)] 0%
Counting pages (2/6) =============> ] 58%
Resolving links (4/6) ==============================] Object 1 of 1
Loading headers and footers (5/6) ==============================] Object 1 of 1
2014-09-05T18:42:18.171572+00:00 app[web.2]: Printing pages (6/6)
Done ] Preparing
2014-09-05T18:42:18.217154+00:00 app[web.2]: Exit with code 1 due to http error: 1299
2014-09-05T18:42:18.226795+00:00 app[web.2]:
2014-09-05T18:42:18.226801+00:00 app[web.2]: RuntimeError (command failed (exitstatus=1): /app/bin/wkhtmltopdf-amd64-12 --page-size Letter --margin-top 0.0in --margin-right 0.0in --margin-bottom 0.0in --margin-left 0.0in --encoding UTF-8 --print-media-type - -):
我无法找到“http error 1299”的任何地方......
没有任何改变......它只是突然发生在一天的中间,没有任何代码可以推进。当然,它在Dev中运行良好。
在调试期间,我将pdfkit更新为0.6.2,我尝试了wkhtmltopdf的v12.0和11.0rc1。如果我在heroku bash上运行它,我可以wkhtmltopdf-amd64 google.com google.pdf就好了,没有错误。
其他人看到了吗?有人能告诉我从哪里开始吗?
答案 0 :(得分:0)
我发现了问题和解决方案,但其原因和原因尚不清楚。
经过一些试验和错误后,我发现NewRelic gem,我们和heroku上的其他人用来跟踪系统性能,是注入一个加载NewRelic服务器的javascript脚本。我们知道它就在那里,因为它用于New Relic的浏览器测量。但我们完全忘记它也会出现在我们正在创建PDF的页面上,因为它是在我认为的机架级注入的。
我找不到告诉它不测量某些页面的方法,所以我只关闭了NewRelic.yml文件中的浏览器测量。繁荣。问题消失了。我的猜测是JS加载时间过长,或导致Wkhtmltopdf错误输出。
我向Heroku报告了解决方案,希望他们能够解决这个问题,或者如果其他人看到它就与NewRelic交谈。在我们的解决方案中,浏览器测量绝对不如PDF生成那么重要,因此我们可以在没有它的情况下生存。
如果您想了解更多细节,可以在PDFkit上看到此问题。 https://github.com/pdfkit/pdfkit/issues/251