gpt4 book ai didi

ruby-on-rails - 如何从延迟作业中获取输出,例如 PDF/HTML 报告

转载 作者:行者123 更新时间:2023-12-04 05:39:27 24 4
gpt4 key购买 nike

我觉得这是一个愚蠢的问题,因为每个人似乎都在掩饰这方面的事情。

我的需求很简单——我在 Heroku 上使用 Ruport 运行一些报告。复杂的报告需要很长时间,并且会超时。我决定使用delayed_job - 但我可以使用其他东西。一旦我知道我在做什么,我也可以将它用于其他事情。

我看到了很多例子、railscasts、关于如何让delayed_job 及其兄弟启动和运行的文档、如何管理你的工作队列等等。一旦我到达那一点,我可能会有一些问题,但现在......

我怎么才能回到我排队的工作?

现在,我只是生成这样的输出:

@report_output     = @report_controller.render(@report_format,@report_params)
send_data @report_output, :filename => "#{@report_type}.#{@report_format}", :type => "application/#{@report_format}" unless :html == @report_format

(然后如果是html报告,它只是正常呈现页面)

它在开发中运行良好,在生产中超时。我可以从文档中看到,生成输出并将其邮寄给用户甚至非常容易,然后我不必担心找回工作。

但我不想那样。我只想向用户显示一个进度页面,定期轮询服务器直到完成,然后重定向他们以查看 HTML 或 PDF 输出。我希望这会返回某种工作 ID 并将其交还给用户,以便他们进行检查,但我不知道它是从哪里来的。我想我可以只看表,但这似乎很愚蠢。我什至可以向用户显示排队/已完成的作业列表,让他们手动选择一个,但这有点矫枉过正。他们只是想下载一份报告,他们不介意需要一两分钟。

我实际上并没有为我的报告使用表格,不需要,它们没有被保存 - 但我想如果有帮助的话可以给他们一个表格和一个 ActiveRecord 模型。看来我不应该这样做。我正在使用 Rails 2.3,但它看起来也与我的问题无关。

似乎我要问的内容如此明显,以至于没有人费心写下来,但我似乎找不到。有示例应用程序吗?我错过了什么?我觉得很愚蠢。

最佳答案

您可以使用 IronWorker 之类的托管后台处理服务(免责声明:我为 Iron.io 工作)。您可以将作业传递给 IronWorker 并让工作人员在后台处理作业时更新状态。然后,您可以轮询 IronWorker 以向用户显示状态,并在完成后更新页面。您还可以使用工作人员的回调在工作人员和应用程序之间进行同步。很高兴能在这方面提供帮助。

关于ruby-on-rails - 如何从延迟作业中获取输出,例如 PDF/HTML 报告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9599499/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com