ユーザ用ツール

サイト用ツール


alworker:基本機能
no way to compare when less than two revisions

差分

このページの2つのバージョン間の差分を表示します。


次のリビジョン
alworker:基本機能 [2014/01/08 14:09] – 外部編集 127.0.0.1
行 1: 行 1:
 +====== AlWorker 基本機能 ======
 +
 +デーモンを作る場合の最もシンプルなコードサンプル。
 +
 +<file ruby base.rb>
 +#!/usr/bin/env ruby
 +
 +require "al_worker"
 +
 +class Worker1 < AlWorker
 +end
 +
 +worker1 = Worker1.new()
 +worker1.daemon()
 +</file>
 +
 +===== 解説 ====
 +スーパークラス AlWorkerをextendして、そこへ機能を実装します。\\
 +コマンドラインから実行すると、すぐ終了したかのように見えますが、プログラムは常駐しています。
 +内部的な「識別名」を持っており、デフォルトで「al_worker」となります。
 +
 +<code>
 +$ruby -I . base.rb
 +$ps ax | grep ruby
 +82918  ??  Is     0:00.00 ruby -I . base.rb (ruby19)
 +$_
 +</code>
 +
 +同じ識別名を持ったプログラムの二重起動を阻止しますので、もう一度起動しようとすると、エラーになります。
 +
 +<code>
 +$ruby -I . base.rb
 +ERROR: Still work.
 +$_
 +</code>
 +
 +/tmp 以下にpidファイルとログファイルが作成されます。この時ファイル名として、識別名 "al_worker"が使われます。
 +
 +<code>
 +$ ls /tmp
 +al_worker.log
 +al_worker.pid
 +$_
 +</code>
 +
 +プロセスの終了は、kill シグナルによって行います。
 +
 +<code>
 +$ kill `cat /tmp/al_worker.pid`
 +$ps ax | grep ruby
 +$_
 +</code>
 +
 +====== 識別名の指定 ======
 +
 +AlWorkerのコンストラクタに文字列を渡すことで、任意の識別名をつけることができます。
 +
 +<code ruby>
 +worker1 = Worker1.new( "ANY_NAME" )
 +</code>
 +
 +または、
 +<code ruby>
 +class Worker1 < AlWorker
 +  def initialize()
 +    super( "ANY_NAME" )
 +  end
 +end
 +</code>
 +
 +
 +====== イニシャライザ ======
 +
 +初期化処理にコンストラクタ(initializeメソッド)を使うこともできますが、ログが記録できない、エラー処理が弱いなど、使いにくい面があるので、イニシャライザを用意しました。\\
 +initialize2()というメソッドを定義すると、コンストラクタに続いて呼ばれます。\\
 +コンストラクタをオーバライドする場合と違い、親をsuperで呼び出す必要はありません。\\
 +コンストラクタは常駐前に、イニシャライザは常駐後に呼び出されるという違いがあります。\\
 +
 +<code ruby>
 +  def initialize2()
 +    # any initialize code
 +  end
 +</code>
 +  
 +
 +====== 常駐の必要が無い場合 ======
 +
 +フォアグラウンドで動作し、常駐の必要が無い場合は、daemonメソッドを run メソッドに変更します。
 +
 +<code ruby>
 +worker1 = Worker1.new()
 +worker1.run()
 +</code>
 +
 +====== 基本的なオプションの解析 ======
 +
 +parse_option() を使うと、よく使われる起動オプションを解析し、動作に反映します。\\
 +
 +<code ruby>
 +worker1 = Worker1.new()
 +worker1.parse_option()
 +worker1.daemon()
 +</code>
 +
 +^オプション^動作^
 +|-p <pidfile>|PIDファイルの指定|
 +|-l <logfile>|ログファイルの指定|
 +|-d|デバグモード。daemonにならずフォアグラウンド実行される。|
 +
  
alworker/基本機能.txt · 最終更新: 2022/02/04 16:35 by hirohito