我覺得這是一個愚蠢的問題,因爲每個人似乎都在關注這方面的事情。如何從delayed_job獲得輸出,例如PDF/HTML報告
我的需要很簡單 - 我運行在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,但它看起來不像我的問題。
好像什麼我問的是如此明顯,沒有一個一直困擾着把它寫下來,但我似乎無法找到它。是否有示例應用程序?我錯過了什麼?我感到愚蠢。
嗯,是的,我可以 - 這就是我的意思,「我想可以給他們一個表和一個ActiveRecord模型,如果有幫助的話」 - 我可以生成一個ReportGen記錄,將這個ID新記錄,將狀態和文件名存儲在那裏,然後用戶可以進行輪詢。 (a)聽起來不僅僅是我應該做的事情,而且(b)爲什麼我找不到其他人做任何類似的示例代碼? 我希望這個記錄有這種工作的某種ID號,所以我可以在晚些時候殺死/清理掛起的工作?我從哪裏得到這些信息,爲什麼我不能把它交回來? – 2012-03-07 21:07:32