Django에서 서버 실행될 때 한 번만 실행할 코드 작성하기

yunyoung·2021년 1월 5일
2

KF99 프로젝트

목록 보기
14/20
post-thumbnail

2020년 12월 08일 기록

프로젝트에서, ML 모델을 불러오고 각종 알고리즘(?)을 불러올 때, 매번 request 요청이 있을 때마다 불러오면 속도가 느리기 때문에 딱 한 번만 불러오고 계속해서 불러온 모델을 사용해야 할 필요가 있었다.

이 때는 AppConfig를 사용하면 된다. AppConfig로 클래스를 만들어준 후, __init__.py에 등록해주면 서버를 실행할 때 한 번만 실행되어 계속해서 가져다 쓸 수 있다.

### load.py

from django.apps import AppConfig
from tensorflow.keras.models import load_model
import cv2
from mtcnn import MTCNN


class LoadConfig(AppConfig):
    model = load_model('/home/lab07/Model_predict/test_mask_model_Densenet201_color_3class_1205.h5')
    haarcascade_dir = '/home/lab07/MTCNN HaarCascade'
    nose_cascade = cv2.CascadeClassifier(haarcascade_dir + '/haarcascade_mcs_nose.xml')
    detector = MTCNN()

    def ready(self):
        pass
### __init__.py

import os

if os.environ.get('RUN_MAIN', None) != 'true':
    default_app_config = 'load.LoadConfig'
### views.py

from . import load

mask1 = load.LoadConfig.model.predict(face_input)
profile
🌈TIL과 개발 노트

0개의 댓글