自動化無しに生活無し

WEBとかAIとかLinux関係をひたすら書く備忘録系ブログ

【Django】manage.pyコマンドを追加させる【バッチ処理、常駐プログラムなどに】

thumbnail

Djangoのmanage.pyにはコマンドを追加することができる。これを利用すれば、アプリディレクトリで定義したモデルをそのまま流用してDBにアクセスしたり、コマンド一発で複雑な処理を終わらせたり、バッチ処理として運用させることも簡単にできる。

manage.pyにコマンドを追加させる

まず、任意のアプリディレクトリにmanagement/commands/ディレクトリを作る。

mkdir -p [アプリディレクトリ]/management/commands/

作ったディレクトリの配下にコードを書く

vi [アプリディレクトリ]/management/commands/testcommand.py

django.core.management.baseからBaseCommandをインポートして継承したクラスを作る。

from django.core.management.base import BaseCommand

class Command(BaseCommand):

    def handle(self, *args, **kwargs):
        print("これでコマンドが実行できる。")

これで準備は完了。後は下記コマンドを実行すれば、上記のコードが実行される。

python3 manage.py testcommand
コマンドが実行できる

crontabからも実行できるので、定時処理にも有効。

結論

manage.pyコマンド追加による用途は非常に多い。

アプリで定義したモデルを継承してDBにアクセスできる。DjangoのモデルORMも使えるのでDBのアクセスも簡単。そのため、DB内のデータを常にチェックして、値が変わったらメールで送信したり、別の値を書き換えるなどの処理もできる。

公式では追加コマンドを使って質問のクローズを行っているようだ。

https://docs.djangoproject.com/en/3.1/howto/custom-management-commands/

スポンサーリンク

シェアボタン

Twitter LINEで送る Facebook はてなブログ