blog

Profile

mewlist
mewlist
寄り道する
音楽バカ
  • mixi
  • friendfeed
  • twitter

  • 31
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

Categories

Discography

  • Unities_128 UNiTiES
    2009
  • Human_128 HUMAN
    2005
rask versionUp(0.0.1) The Terminatable Task Engine

rask version 0.0.1

処理の中断ができるタスクエンジン

本運用が始まったシステムで、それが何らかのバックグラウンド実行するジョブとかタスクとかを持つようなサービスの場合、ちょっとだけコードを変更したいんだよなーってことは良くあるが、実際変更したものに差し替えるとなると心臓に悪いものだ。


   rask を使うとこっそり止めて、上司に怒られないうちに復帰させるバックグラウンド処理を記述することができる。
 本来バックグラウンド実行のためにタスク処理は必須ではないのだが、いわゆるタスク処理として、処理を細分化するように設計すれば、本当の意味でいつでも止められるようになる。タスクの粒度を下げれば下げるほど中断開始から中断されるまでの時間は短縮される。


使えるケース

最近のwebアプリとかだと、外部サイトから裏でごそごそ何か集めてきて結果を返すみたいなことが多いと思うのだけど、通信相手の応答速度なんて気まぐれなので、ブラウザがタイムアウトして、プロセスが中断されてしまい「あれ、どこまで宿題やったっけ」みたいなこと、よく起こる。おまけに、ユーザーも怒る


   そんなときに、バックグラウンドに処理を引き渡して、web には、「処理が完了するまでお待ちください」ってやっておけば、とりあえず安心だ
 ステートマシンなので、実行状態を監視できるというのもメリットだ。何%進んだか? なんてのを状態として仕込んでおけば、良くあるプログレスバーみたいなのをリアルに表現できる。タスクが終わったかどうかも、webでリロードするたびに確認できるようになる。 

 

ちなみに、rask上に記述したコードのバグでとまって状態が飛んだら
それはテスト不足ですYell