LoginSignup
2
4

More than 3 years have passed since last update.

OSSフレームワークにおけるバッチ処理(カスタムコマンド、コンソールコマンド)の起動コマンドの比較

Last updated at Posted at 2020-03-24

概要

バッチ処理は様々な用途で必要になるため、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

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4