【问题标题】:Wicked-pdf times out in HerokuHeroku 中的 Wicked-pdf 超时
【发布时间】:2012-05-04 14:56:53
【问题描述】:

我的 pdf 在本地正确生成,有时在我的 Heroku 应用程序中生成,但有时它们会超时,我会看到这个错误

2012-05-04T14:53:33+00:00 app[web.1]: Started GET "/orders/125/invoice_pdf.pdf" for 10.87.41.73 at 2012-05-04 14:53:33 +0000
2012-05-04T14:54:03+00:00 heroku[router]: Error H12 (Request timeout) -> GET www.printavo.com/orders/125/invoice_pdf.pdf dyno=web.1 queue= wait= service=30000ms status=503 bytes=0
2012-05-04T14:54:03+00:00 heroku[nginx]: 10.87.41.73 - backerm2 [04/May/2012:14:54:03 +0000] "GET /orders/125/invoice_pdf.pdf HTTP/1.1" 503 607 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.168 Safari/535.19" www.printavo.com
2012-05-04T14:54:03+00:00 heroku[nginx]: 127.0.0.1 - backerm2 [04/May/2012:14:54:03 +0000] "GET /orders/125/invoice_pdf.pdf HTTP/1.0" 503 607 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.168 Safari/535.19" www.printavo.com
2012-05-04T14:54:05+00:00 heroku[router]: Error H12 (Request timeout) -> GET www.printavo.com/customers/new dyno=web.1 queue= wait= service=30000ms status=503 bytes=0

知道有什么问题吗?

【问题讨论】:

  • 我也看到了超时。我将外部图像封装在 PDF 中,这可能是造成这种情况的原因。你是吗?
  • 你需要 2 个网络测功机,它可以工作

标签: ruby-on-rails ruby-on-rails-3 wicked-pdf


【解决方案1】:

2 web dynos 修复了这个问题或者使用了delayed_jobs gem。还要确保在生成的 PDF 中包含 CSS。

【讨论】:

    【解决方案2】:

    经过进一步审查。您不需要 2 个网络测功机。只需确保在 application.html.erb 文件夹和您的 file_name.pdf.erb 中包含 CSS。

    这是我的 application.html.erb 文件。

    <% if request_from_pdfkit? %>
                <!-- css for pdf -->
                    <style type="text/css">
                        <%= File.read(Rails.root.join("public","stylesheets","invoice_pdf.css.scss"))%>
                        <%= File.read(Rails.root.join("public","stylesheets","app.css.scss"))%>
                    </style>
                <% end %>
    

    然后是我的 .pdf.erb 文件

    <!DOCTYPE html>
    <html>
    <head>
      <title><%= title %></title>
        <style type="text/css">
            <%= Printavo::Application.assets["invoice_pdf.css.scss"].to_s.html_safe %>
            <%= Printavo::Application.assets["app.css.scss"].to_s.html_safe %>
            body{ font-family: arial !important;}
        </style>
    </head>
    

    【讨论】:

      猜你喜欢
      • 2011-06-28
      • 2015-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多