Main Data Crontab 적용!

메인 페이지에서 크롤링한 데이터를 텍스트 파일에 저장했고

직접 수동 업데이트하는 방식으로 테스트를 진행했다.

그리고 static이라는 폴더를 만들어서 텍스트 파일로 모아 관리했다.

django에서는 정적인 파일을 static 폴더에 넣어서 관리하는데

collectstatic을 하지않으면 업데이트가 되지 않는다.

배포할 때는 AWS S3를 연동할텐데 collectstatic을 하지 않으면

업데이트를 할 수 없게 된다.

그래서 생각한 것이 CrawlingData라는 모델을 만들었다.

그리고 크롤링할 정적 페이지를 저장할 필드를 만들었다.

1
2
3
4
5
class CrawlingData(models.Model):
title = models.CharField(max_length=50, blank=True)
# 정적 페이지 저장
html_data = models.TextField()
update_date = models.DateTimeField(auto_now=True)

그리고 django-crontab을 이용해서 내가 지정한 시간에 CrawlingData에

다시 정적 페이지를 저장할 수 있도록 작업을 등록했다.

1
2
3
4
5
6
7
8
9
# settings.py
CRONJOBS = [
# 3시간 마다 동작
('0 */3 * * *', 'main.cron.upcoming_data'),
('0 */3 * * *', 'main.cron.special_new_data'),
('0 */3 * * *', 'main.cron.special_top_data'),
('0 */3 * * *', 'main.cron.new_releases_data'),
('0 */3 * * *', 'main.cron.top_sellers_data')
]

로컬에서는 1분으로 해서 테스트를 진행했다.

이제 AWS EC2 서버에서 3시간마다 잘 되는지 확인해봐야겠다.

이 방법으로 하긴 했지만 정적 페이지에 내가 크롤링하고자 하는 부분을

포함해서 모든 소스가 들어있기 때문에 좀 더 효율적인 방법을 생각해봐야겠다.

Share