장고 프로젝트 회고 2 - 스케쥴링편

김민정·2022년 6월 5일
0

장고 프로젝트1

목록 보기
2/4

Cart.objects.filter(created_at__lt = datetime.datetime.now() - datetime.timedelta(hours=24)).delete()

  1. 사용한 이유?
  • 장바구니의 경우 특정 시간이 지나면 물건이 없어져야 하는 경우 필요하다고 생각한 코드
  1. 추천받은 방법?
  • 매번 장바구니를 불러와서 시간별로 filter를 건다는건 쿼리를 많이 사용해서 불필요한 방법. 실제는 filter를 걸어서 24시간 내에 있는 장바구니만 불러오고 장바구니에 담긴 물건 중 24시간 이상이 된 물건은 저장해두었다가 특정 시간에 bulk delete 같은 메소드를 이용해서 한번 시간에 지운다고 함
    => 스케쥴링
  1. 스케쥴링이란?
    한정된 자원으로 최대한 성능을 이끌어내기 위해서는 CPU를 적절하고 효율적으로 사용하는 것을 의미하며 비선점스케쥴링과 선점스케쥴링으로 나뉠 수 있다.

  2. 장고에서 스케쥴링을 구현할 수 있는 방법
    4-1. celery를 사용한다.
    4-2. django - crontab을 사용한다.

  3. cron이란?
    특정한 시간에 또는 특정 시간 마다 어떤 작업을 자동으로 수행하게 해주고 싶을 때 사용하는 명령어로 리눅스에만 있는 기능은 아니고 os마다 존재하는 개념이다.

  4. django-crontab 사용
    -장바구니의 경우 특정 시간이 지나면 물건이 없어져야 하는 경우 django-crontab 사용
    1.pip install django-crontab
    2.settings.py 설정

    INSTALLED_APPS = ('django_crontab')

    3.관련파일 만들고 파일 내 관련 함수 만들기

    def delete():
    Cart.objects.filter(created_at__lt = datetime.datetime.now() - datetime.timedelta(hours=24)).delete()

    4.settings.py 설정

    CRONJOBS = [
    ('* * /2 * *','crow.cron.delete', '>> /Users/gimminjeong/cron.log'),
    ]
    ({작업 시간 단위}, {실행할 파일, 작업, 행동 등}, {작성할 Log 파일}) 순으로 정렬

    5.크론탭 업무추가

    python manage.py crontab add

    6.업무확인 및 기타 명령어 확인
    python manage.py crontab show - 확인
    python manage.py crontab remove - 제거

0개의 댓글