【问题标题】:Schmooze:: Process failed + when using grover gem to convert html2pdfSchmooze:: Process failed + 使用 grover gem 转换 html2pdf 时
【发布时间】:2020-03-18 20:31:22
【问题描述】:
respond_to do |format|
        format.html
        format.pdf do
          grover = Grover.new('http://localhost:3000/generate_report', format: 'A4')
          pdf = grover.to_pdf
          File.open(Rails.root.join('report.pdf'),'wb', encoding: 'ascii-8bit') { |f| f.write(pdf)}

        end
      end

我需要将我的 html 页面转换为 pdf。但是我得到一个“schmooze 进程失败”并且系统在执行 grover.to_pdf 时挂起。它在终端上运行良好,但不适用于我的 rails 项目。

【问题讨论】:

    标签: ruby-on-rails pdf pdf-generation puppeteer grover


    【解决方案1】:

    听起来你的系统挂了,因为默认情况下在开发模式下运行 Rails 时,你只运行 1 个线程。

    当您在请求中并尝试访问 generate_report 端点时,您正在排队请求并等待它的响应,但是因为 Rails 一次只能处理一个请求,所以响应永远不会到来,所以请求永远不会完成,导致死锁。

    尝试在不发出网络请求的情况下获取报告的 HTML,方法是填充模板或调用 ActionController.render() 并改用它。

    如果这不是你的选择,请将 Rails 服务器配置为在开发模式下使用多线程(我建议你在开发模式下使用 Puma,或任何生产使用)。

    【讨论】:

    • 我会尝试第一个选项,因为选项 2 - 我已经在开发模式下使用 Puma。请参考:Puma 从单一模式开始... * 版本 4.3.1 (ruby 2.6.4-p104),代号:Mysterious Traveler * 最小线程:5,最大线程:5 * 环境:开发
    猜你喜欢
    • 2010-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多