今日はカスタムコマンドを使ってみたいと思います。カスタムコマンドというのはバッチ処理などを行う時に使用する、CakePHPで言うところのShellみたいな機能です。今回はカスタムコマンドを作成してそれをクーロンで実行できるようにしてみたいと思います。カスタムコマンドファイル設置カスタムコマンドのファイルはアプリケーションフォルダの中に「management」というフォルダを作成し、さらにその中に「commands」というフォルダを作成し、その中に作成します。manage.pynormnoisやappは僕が自分でつけたプロジェクト名やアプリケーション名です。図の上の方に「management」「commands」というフォルダがあるのが分かると思います。今回はその中に「sample.py」というカスタムコマンドファイルを作成しました。sample.pyの中身とりあえずsample.pyの中にこんなコードを書いてみます。print('無事に動いたよ!')ファイルの中に「Command」というクラスを作り、その中に「handle」という関数を書きました。クーロンなどで呼び出した時はこのhandle()の中の処理が動きます。モデルの読み込みなどはビューから呼び出す時と同じです。1)usersというテーブルがあったとして、そこから一件データを取っていると思ってください。上記のsample.pyをコマンドラインから起動する方法は簡単です。sampleサーバーを起動する時とほとんど書き方は同じです。ここではmanage.pyとだけ書いちゃってますが、実際にはプロジェクトフォルダのmanage.pyまでのパスを書きます(/var/www/normnois/manage.pyみたいな)。その後ろの「sample」はカスタムコマンドのファイル名です。クーロンで実行する場合もこの書き方でオッケーです。sampleこれで毎日夜中の0時にsample.pyが起動されるようになります。「/usr/bin/python3」はpythonコマンドファイルの絶対パスです。人によっては違うかもしれません。コマンドもpython3じゃなくてpythonの場合もあると思います。どこにあるか分からない場合はwhichコマンドを使えばパスが分かります。python3引数について引数を渡したい場合は「add_arguments()」という関数を作成します。'12345']「parser.add_arguments()」がどういうものかってのをあまりまだ理解できてないので、すみませんが詳細な説明は省略で。書けばkwargs引数の中に値を渡すことができます。typeをstring型に指定しているので、今回の場合は引数に数字を渡しても文字列型として受け取ることになります。独自にオプション引数を作成することもできます。'12345']['hello']こんな感じです。「-opt」という引数用のキーを自分で定義し、そこにhelloという値を渡しています。add_argumentによって引数を使えるようにした場合、デフォルトだと引数の指定が必須となるので、引数がないとエラーになってしまいます。-opt必ずしも引数を指定するとは限らない場合はrequiredをFalseにしておきましょう。sample#出力結果NoneDjangoはCakePHPと違い、全てのファイルやメソッドをどこからでも同じように呼べるのが便利ですよね。CakePHPのシェルだとモデルは簡単に呼び出せても、コントローラーやコンポーネントを呼び出すのに一手間必要だったりしますから。2書いてみたら無駄な話が無駄に長くなってしまったので、前後編に分けました。タイトルにある通り、前編では本題に入りません。