django crontab을 사용하여 크롤링 데이터를 주기적으로 업데이트 하는
작업을 구현했습니다.
먼저
app
├── config
│ ├── asgi.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── crawler ( ./manage startapp 으로 만든 appname)
│ ├── management
│ │ └── commands
│ │ ├── emart_cralwer.py
│ │ ├── shilladuty_cralwer.py
│ │ └── ssg_duty_cralwer.py
│ ├── admin.py
│ ├── apps.py
│ ├── chromedriver
│ ├── migrations
│ ├── models.py
│ ├── serializers.py
│ ├── tests.py
│ ├── urls.py
│ └── views.py
├── db.sqlite3
├── log
│ ├── emart_cralwer12_08_2020.log
│ ├── emart_cralwer13_08_2020.log
│ ├── shilladuty_cralwer13_08_2020.log
│ └── ssg_duty_cralwer13_08_2020.log
├── manage.py
cralwer (startapp name)
1. 밑에 management 디렉터리를 만들어준다
2. management 디렉터리 밑에 commands 디렉터리를 만들어 준다
3. 마지막으로 그 밑에 실행시킬 .py 파일을 만들어준다
(이때 파일 명이 명령어 이름에 해당된다.)
pip install django-crontab
poetry add django-crontab
INSTALLED_APPS = [
"django_crontab",
]
잘 실행 되어있는지 log 파일을 만들어준다
makedir app/log
CRONJOBS = [
('* 0 * * *', 'django.core.management.call_command', ['emart_cralwer'], {},
'>> ' + BASE_DIR + '/log/emart_cralwer{:%d_%m_%Y}.log 2>&1'.format(datetime.now())),
('* * */3 * *', 'django.core.management.call_command', ['ssg_duty_cralwer'], {},
'>> ' + BASE_DIR + '/log/ssg_duty_cralwer{:%d_%m_%Y}.log 2>&1'.format(datetime.now())),
('* * */3 * *', 'django.core.management.call_command', ['shilladuty_cralwer'], {},
'>> ' + BASE_DIR + '/log/shilladuty_cralwer{:%d_%m_%Y}.log 2>&1'.format(datetime.now())),
]
python manage.py crontab add
python manage.py crontab remove
python manage.py crontab show