Python・Djangoで一定時間間隔のバックグラウンド処理を実現

プログラミング
Masa
Masa

こんにちは!Masaです。

今回はDjangoでバックグラウンド処理を実現する方法を解説します!

この記事はこんな方におすすめ!
  • Djangoでバックグラウンド処理を実行したい人
  • Djangoの様々な技術を勉強している人

Djangoを勉強中の人にお勧めする1冊!
実装から公開まで一通り記載してあるので、AWSでサーバを立てて公開まで出来てしまいます

バックグラウンド処理とは

バックグラウンド処理とは、プログラムの処理をユーザの見えない所で行うことです。
アプリケーションでは、ユーザーが意識しない膨大な処理が裏側で行われており、これをバックグラウンド処理と言います。

今回の記事では一定間隔の時間で処理を繰り返すバックグラウンド処理を解説します。

バックグラウンド処理を実現するために

今回バックグラウンド処理を実現するために、Pyhtonのライブラリーである”APScheduler”を使用します。

サンプルを用いてDjangoでバックグラウンド処理を実現していきましょう!

APSchedulerのインストール

APSchedulerはPythonのライブラリなので事前にインストールが必要です。

以下のコマンドをコマンドプロンプトやターミナルに入力してAPSchedulerをインストールしましょう。
(仮想環境内でDjangoの開発をしている場合は仮想環境内でインストールしましょう)

pip install apscheduler

インストールに成功したか確認してみましょう。
以下のコマンドでインストール一覧を確認し、APSchedulerがあれば成功です。

pip list

事前設定を行う

APSchedulerを使用するために2点事前設定を行う必要があります。

1つ目は以下のコードをアプリケーションフォルダ内のapps.pyに追記しましょう。
今回は”example_app”というアプリケーションを使用します。

from django.apps import AppConfig


class ExampleAppConfig(AppConfig):
    default_auto_field = 'django.db.models.BigAutoField'
    name = 'example_app'

    #以下追加
    def ready(self):
        from .update import start
        start()

10行目のupdateは後ほど作成するupdate.pyファイルになります。

ready関数を作成することにより、runserverコマンドを実行するとupdate.py内の処理が実行されるようになります。

2つ目の事前設定は、settings.pyのINSTALLED_APPSに以下のコードを記載します。

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'example_app',
    'django.contrib.humanize',
    'example_app.apps.AppConfig', #追加
]

ただ、こちらは自動で作成されていることが多いので、既に作成されている場合は記述しないでください。
※上記の例でも’example_app’が記述されています。そのためexample_app.apps.AppConfigを記述するとエラーが出ます。



バックグラウンド処理を記述

最後にメインのバックグラウンド処理を記述しましょう。
アプリケーションフォルダ内にupdate.pyを作成し、以下のコードを記述します。

from apscheduler.schedulers.background import BackgroundScheduler

def periodic_task():
    print('Hello!')


def start():
    scheduler = BackgroundScheduler()
    scheduler.add_job(periodic_task, 'interval', seconds=5) #5秒ごとにperiodic_taskを実行
    scheduler.start()

update.pyには2つの関数を記述しました。

  • periodic_task():定期処理するプログラム
  • start():periodic_task()を呼び出す頻度を決める関数

今回のコードではHello!が5秒おきに表示されます。
periodic_task()をカスタマイズすることにより、自分がやりたいバックグラウンド処理を実行することができるようになります!

その他にも、1日おきや、特定の時間帯を指定して1時間おきに実行など柔軟な実行時間を設定できます。



まとめ

今回はPython、Djangoにて定期的なバックグラウンド処理を実行する方法を解説しました。

定期的なバックグラウンド処理はAPSchedulerというPythonのライブラリを使用することで実現します。

Djangoでは以下の手順でAPschedulerを導入しましょう。

  1. 開発環境で”pip install apscheduler”を実行する
  2. apps.py、settings.pyにて必要な事前設定を行う
  3. 定期処理のプログラムとそれを動かす条件の関数を新規ファイルにて記述する(今回はupdate.py)

以上です!最後まで読んでいただきありがとうございました!

Djangoを勉強している人へお勧めの1冊!
実務でも十分使えて開発工程が1通りわかります。

タイトルとURLをコピーしました