ユーザ用ツール

サイト用ツール


prog_worker:使ってみる

使ってみる

Workerは、常駐サーバー(デーモン)を作る時のフレームワークです。組み込みシステムなどにおいて起動時に常駐し、機器制御などを行うことを想定しています。

ここではサンプルとして、一秒ごとにランダム値をログに書き出すだけの機能をもったアプリケーションを作ります。

server.rb
#!/usr/bin/env ruby
# -*- coding: utf-8 -*-
 
require "al_worker"
require "al_worker_timer"
 
class Worker1 < AlWorker
  def initialize2()                 # 注意 initializeではなく、...2です。
    @timer = Timer.periodic( 1 )    # every 1 sec.
    @timer.run() {
      log( "Random value #{rand(100)}" )
    }
  end
end
 
worker1 = Worker1.new()
worker1.daemon()

必要なファイルをrequireし、AlWorkerクラスを継承してアプリケーションを作ります。

起動

Aloneのライブラリをrequireできるように、-Iオプションでlib位置を指定して起動します。

ruby -Ilib server.rb

実行してもすぐコマンドに帰ってきたと思います。これで常駐して処理を続けています。psコマンドなどで確認してみましょう。

ps ax | grep [r]uby

ファイルにも、きちんと1秒毎に値が書き込まれています。

tail -F /tmp/al_worker.log

終了

終了は、プロセスにシグナルを送る一般的な方法です。デフォルトで、pidファイルができていますので、それを利用します。

kill `cat /tmp/al_worker.pid`

機能の詳細は、alworkerの項をご覧ください。

prog_worker/使ってみる.txt · 最終更新: 2019/03/18 17:55 by hirohito