概要
バッチ処理は様々な用途で必要になるため、OSSフレームワークを利用せずに自作することも多い。
バッチ処理を自作する時の起動コマンドの設計の参考資料として、OSSフレームワークのカスタムコマンド、コンソールコマンドの起動コマンドを比較してみる。
Javaフレームワーク
Spring Batch
buildツール(gradle or maven)によってソースコードをビルドしてjarファイル作成済みとする。
起動コマンド
java -jar $jar
Pythonフレームワーク
Django
Custom Commandsとして紹介されている。
https://docs.djangoproject.com/en/2.1/howto/custom-management-commands/
バッチファイル
batch.py
起動コマンド
cd $django_project_dir
python manage.py batch
Flask
Custom Commandsとして紹介されている。
http://flask.pocoo.org/docs/1.0/cli/
バッチファイル
test.pyの中身
import click
from flask import Flask
app = Flask(__name__)
@app.cli.command('test')
@click.argument('name')
def create_user(name):
print("Hello World" + ' ' + name)
起動コマンド
cd $flask_project_dir
export FLASK_APP=test.py
flask test $arg1
*flaskコマンドはpip install flaskでflaskをインストールすると、グローバル領域(/usr/bin/flask)にインストールされる。
Luigi
バッチファイル
helloworld.py
バッチファイル内でclass HelloWorldを定義しているものとする。
起動コマンド
python helloworld.py HelloWorld
もしくは
python -m luigi --module helloworld HelloWorld
PHPフレームワーク
Symfony2
バッチファイル
BatchCommand.php
実行コマンド
バッチファイルの中で
$this->setName("$batch_name")
のようにバッチ実行時の名称を設定した後、下記を実行。
cd $symfony_installed_dir
php app/console $batch_name
*symfony2まではappディレクトリの下にconsoleファイルがあったが、symfony3になるとappディレクトリがbinディレクトリに変更されている。
Rubyフレームワーク
Ruby on rails
railsはバッチ処理を実行するパターンが複数用意されている
E.g.1
rakeを利用する場合
バッチファイル
起動コマンド
bundle exec rails $set_name_in_rake
E.g.2
rails runnerを利用する場合
バッチファイル
$BatchFile.rb
起動コマンド
bundle exec rails runner '$BatchFile.new.$method_name'
*railsコマンドをグローバルインストールしてrails ***のみで実行することもできるが、基本的にはbundler execの利用が多いと思う。
参考
https://qiita.com/YusukeHigaki/items/cc5729b772ec963de7c2
https://qiita.com/okamu_/items/541ac96a1380b26d95c8