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