Cart.objects.filter(created_at__lt = datetime.datetime.now() - datetime.timedelta(hours=24)).delete()
스케쥴링이란?
한정된 자원으로 최대한 성능을 이끌어내기 위해서는 CPU를 적절하고 효율적으로 사용하는 것을 의미하며 비선점스케쥴링과 선점스케쥴링으로 나뉠 수 있다.
장고에서 스케쥴링을 구현할 수 있는 방법
4-1. celery를 사용한다.
4-2. django - crontab을 사용한다.
cron이란?
특정한 시간에 또는 특정 시간 마다 어떤 작업을 자동으로 수행하게 해주고 싶을 때 사용하는 명령어로 리눅스에만 있는 기능은 아니고 os마다 존재하는 개념이다.
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 - 제거