通販Go!Go!(2.5-55.jp) ChangeLog 0.6.1.2

http://2.5-55.jp 0.6.1.2

バックグラウンド処理の子プロセス化

  1. 実際の処理を fork + Process.detach 方式で子プロセスに任せる
  2. BackgrounDRb化についてはペンディング

送料を取ってくる処理はWEBページ取得にかなり時間がかかるので、バックグラウンドで処理して、結果を随時キャッシュDBへ書き出すようにしている。こういう処理は本来、BackgrounDRbで行うべきだと思うが、簡単な処理では問題がないが、数十秒くらいかかる処理を実行すると Client disconected してしまって処理が進まない。呼び出し側(Rails)のプロセスが死ぬタイミングで disconected するのかどうか、まだきちんと調べきれていないが、原因が全然別のところにあるかもしれないので、少し頭を冷やして、小さいサンプルで動作確認してから導入することにして、いまのところはペンディング


とりあえずの妥協策として、別プログラムを走らせておいて、バックグラウンド処理はそちらへのメッセージ通知で行うようにしているが、このプログラムが逐次処理だったので、メッセージがキューに溜まってしまって、なかなか処理が進まない状態だったので、こちらを fork + Process.detach で子プロセス化することにした。detach しないと子プロセスは実行が終わってもゾンビとして残ってしまうので要注意。