[前][次][番号順一覧][スレッド一覧]

rails:3909

From: Takashi Kawachi <tkawachi@g...>
Date: Tue, 16 Jul 2013 21:56:36 +0900
Subject: [rails:3909] Re: forkってできないのでしょうか

出沢さん、こんばんは。
はじめまして。河内です。

時間がかかる処理は deleyed_job, resque, sidekiq などを使ってバックグラウンドで実行するのが良いかと思います。
バックグラウンドで実行されるコードの状態(計算中、完了、エラーなど)と得られた結果はDBなどに格納します。 Browser からは
JavaScript で polling するなどして結果を適宜表示します。



2013年7月16日 21:36 dezawa <dezawa@a...>:

> 出沢です
>
> 事情が有って RAILS_GEM_VERSION = '2.2.3' on Linuxです
>
>
> 複数の解が有り、一つ出すのに20〜60秒かかる問題があります。
> これを次の様にしたいと思っています
>   (1)最初の解が出た所でまずそれを表示する
>   (2)その解を見てもらっている間に残りの解をとく
>   (3)解が出る毎にリンクを貼り替える。
>        (求まった解の数のリンク、だんだん増える)
>   (4)ユーザはリンクをつついて解を比較する
> もしくは
>   (1')解が出る前に戻る。答えが無い画面。
>   (2')解をひたすら作る
>
> この(1)(2)、ないし(1')(2')を実装するために
>   (A)forkしchildで解を求めつづける
>   (B)forkしchildで戻り、親で解を求めつづける
> をこころみたのですが、
>  (A)親が終わった時点でchildも終了する
>  (B)500 - Internal Server Error で終わる
>       ActiveRecord::Baseのmethodがおかしくなっている様で
>    Model.find_by_attribute だと
>        undefined method `find_by_attribute'
>    Model.find(:conditions => ["attribute = ?",value)[0] だと
>        (Couldn't find Model without an ID):
>    というエラーがlogに残ります。
>
> (1)(2)、ないし(1')(2')を実装するよい方法はないでしょうか。
> この様な
>   「複数解あり、解が出揃うのを待つのは時間がかかりすぎる」
> 場合に採る良い方法はないでしょうか
>
> 宜しくお願いします。
>
> --
> ML: rails@r...
> 使い方: http://QuickML.com/
>



-- 
Takashi Kawachi
tkawachi at gmail.com


添付ファイル

[前][次][番号順一覧][スレッド一覧]

      3907 2013-07-16 14:36 [dezawa@a...         ] forkってできないのでしょうか            
      3908 2013-07-16 14:52 ┣[dezawa@a...         ]                                       
-> @  3909 2013-07-16 14:56 ┗[tkawachi@g...       ]                                       
      3911 2013-07-17 01:47  ┗[dezawa@a...         ]