Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
4
Help us understand the problem. What is going on with this article?

More than 1 year has passed since last update.

@cocoa-maemae

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

概要

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

4
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
4
Help us understand the problem. What is going on with this article?