SlideShare a Scribd company logo
1 of 35
Download to read offline
Azure Function 활용한
파이썬 크롤링 스케줄링
AskDjango 이진석
발표자: 이진석
● 파이썬 중독자 (2004년 v2.4~), 장고 중독자 (2008년 v1.0~)
● 파이썬/장고 질답/교육 서비스 AskDjango 운영자
● 서울대학교, 벤처경영학, "벤처창업 웹프로그래밍" 파이썬/장고 강사
● Microsoft Azure MVP (2016년~)
"이제 막 파이썬을 시작했습니다."
제가 원할 때 실행시키고, 그 결과를 저장하고 싶어요.
그런데 ...
익혀야할 것이 ... 참 많군요.
... CRON, AZURE, AWS, DATABASE, LINUX ...
직접 인프라를
구축해야하나요?
서비스로 제공받을 수는
없나요?
Microsoft는 서비스 덕후
Azure의 Serverless플랫폼인 Azure Function으로 해결해봅시다.
AWS Lambda가 기능적으로는 더 좋긴 합니다만, Azure가 UI가 쉬워요.
> 윈도우에 익숙하시다면, 친숙하게 사용하실 수 있어요.
Azure Function 은 ...
내가 올린 파이썬/자바스크립트/C#/PHP/Bash/Batch 등의 코드를 파일 단위 실행
지원
코드를 웹을 통한 편집/실행 지원 (물론 Git/Ftp/Dropbox를 통한 배포를 지원)
추가 라이브러리 설치없이도
- 다양한 방법의 코드 실행 방법 지원 => Trigger
- "파일 인터페이스"로 여러 Azure 서비스와의 I/O를 지원 => Binding
Azure Function은 2가지 버전
1. 올인원 윈도우 IIS 버전
a. 지원하는 언어가 모두 설치되어있어요.
b. C#은 빠릿빠릿하게 동작
c. 파이썬은 Experimental 지원. 성능이 엄청 뛰어나진 않지만, 크롤링 목적으로는 쓸만.
2. 커스텀 리눅스 버전 (Preview)
a. Docker 버전
윈도우 버전에서 파이썬이 느려요.
파이썬과 라이브러리는 D드라이브에 설치
● D드라이브는 네트워크 드라이브
● 매 요청 때마다 파이썬 인터프리터를 실행하는 방식 …
● 매 실행때마다 모듈 파일들을 로딩을 해야하니 … => 느림 :(
requests/beautifulsoup4/azure 라이브러리 정도는 괜찮아요.
Pandas는 로딩하기에는 너무 큰 … :(
돌려볼 파이썬 코드는 단 32줄
https://gist.github.com/nomadekr/7ec5975738cdc27ee2ff5c82c7b0499a
1. 매 분마다 네이버 실시간 검색어를 크롤링해서
2. Azure Storage Table에 저장합니다.
3. 사용하는 라이브러리는 딱 2개 : requests, BeautifulSoup4
Azure 무료계정 만들기
"무료 체험" 구독
● 혜택 - AWS Free Tier와 유사
○ 첫 달에 24만원 크레딧
○ 12개월 동안 다양한 무료자원 제공
● https://azure.microsoft.com/ko-kr/free/
○ Microsoft 계정이 없으시면 이때 만드시면 됩니다.
○ 가입 시에 신용카드 정보를 입력하지만 이는 확인을 위한 것일 뿐, 유료회원 등록과정은
아닙니다. 유효뢰원은 구독란에 "종량제"로 표시됩니다.
Azure Function 앱 생성하기
Azure Function 앱 생성하기
● 앱 이름 : 원하시는 이름
● 구독 : 무료 체험
● 리소스 그룹 : 관리 목적의 논리적 그룹. 앱 이름과 같은 이름을
지정하겠습니다.
● 호스팅 계획
○ 사용 계획 : 쓴 만큼 과금 (월 1백만번까지 무료)
■ 대신 조금 느려요. 파이썬에서는 특히 느려요.
○ App Service 계획 => 이걸 선택
■ 기존에 사용 중인 App Service 플랜 공유 가능. 추가 과금 없음.
■ 성능을 올릴 수 있어요.
Azure Function 앱 생성하기 (2)
● App Service 계획/위치
○ 새로 만들기
○ 앱이름과 같은 이름을 지정하겠습니다.
○ 위치 : 데이터센터 위치. Korea Central (서울) 선택.
○ 가격 책정 계층 : S1 표준 선택
● 위치 : Korea Central(서울) 이 안 뜬다면, Japan East 가 가깝습니다.
● 저장소 : Azure Storage는 단순 정적 파일 저장소(Blob) 뿐만 아니라,
NoSQL저장소 역할도 합니다. Function App을 위한 각종 세팅/스케줄링
정보를 담습니다.
○ 앱 이름과 유사하게, 새로 만들어보겠습니다. 이름에 소문자/숫자만 사용가능합니다.
Application Function 앱 생성하기 (3)
● Application Insights : 켜두시면, 여러 정보를 획득 가능.
○ 위치는 Don't care. : East US.
○ 대시보드에 고정 : 체크
○ 만들기 : 클릭
● 대시보드에 고정 : 체크
● 만들기 : 클릭
Python3 를 설치합시다.
● nuget 에서 지원하는 파이썬 3.6을 설치해봅시다.
● 함수 앱 > 플랫폼 기능 > 고급도구 (KUDU) > Debug Console > CMD
● tools 디렉토리에 파이썬3 설치
CMD> nuget.exe install -Source https://www.siteextensions.net/api/v2/
-OutputDirectory D:homesitetools python361x64
● Azure Function에서 접근가능한 경로에 Python3 이동
CMD> mv /d/home/site/tools/python361x64.3.6.1.3/content/python361x64/*
/d/home/site/tools/
● 지금부터 실행되는 Azure Function은 d:homesitetoolspython 을 통해
실행됩니다.
필요한 팩키지도 설치해주세요.
CMD> d:/home/site/tools/python -m pip install requests beautifulsoup4
파이썬으로 새 함수 만들기
● Azure Function에서의 "파이썬 새 함수는 "run.py" 파일이 포함된 파이썬
팩키지를 뜻합니다.
● 생성하기
○ 지정 시간마다 실행을 하기 위해, TimerTrigger를 쓰고 싶지만 기본 템플릿에 없어요. :(
○ 일단 HttpTrigger로 생성하고, 변경해주겠습니다.
○ Python 템플릿
○ 함수 이름 지정 : "Crawler"
파이썬 버전 확인을 위해, 기본 코드를
변경해줍니다.
TimerTrigger 로 변경해줍시다.
● "Cralwer > 통합" : HttpTrigger를 삭제하고, TimerTrigger 등록
○ 타임스탬프 매개변수 이름 : myTimer
■ 매 실행 시마다, myTimer 이름의 환경변수로 타임스탬프 값이 전달됩니다.
○ 일정
■ 0 * * * * *
■ 이제 1분 마다 Cralwer의 run.py 가 실행됩니다.
● Tip
○ Scheduler 서비스를 이용해봐도 좋습니다.
Schedule
● cron 포맷과 유사
● "sec min hour day month day-of-week"
○ 0 0 */2 * * * : 매 2시간마다 정시
○ 0 0 9-17 * * * : 매일 오전 9시~오후5시 정시
○ 0 30 9 * * 1-5 : 매 평일 오전 9시 30분
● 디폴트 UTC 시간이 사용됩니다.
○ WEBSITE_TIME_ZONE 환경변수를 통해, 시간대 변경을 지원
■ Korea Standard Time
■ Eastern Standard Time
■ AUS Eastern Standard Time
Azure Table Service
● Azure Storage에서 지원하는 NoSQL 서비스
○ Azure Storage에서는 Blob, Table, Queue, Files 서비스를 지원합니다.
○ Premium Table 서비스는 CosmosDB
● 모든 레코드는 다음 3가지를 가집니다.
○ PartitionKey : 최대 1KB 크기의 문자열 (필수 지정)
○ RowKey : 최대 1KB 크기의 문자열 (필수 지정)
○ Timestamp : 자동 지정
● PartitionKey와 RowKey를 조합하여, 각 레코드를 식별합니다.
데이터를 저장할 Table 생성하기
● Azure Portal > 저장소 계정 > 생성한 저장소 > 테이블 > 새 테이블
○ "cralwerTable" 이름의 테이블 생성
● "Cralwer > 통합" : Azure Table Storage 출력 생성
○ 테이블 매개변수 이름 : tablePath (파이썬 코드 내에서 참조할 환경변수 명)
○ 테이블 이름 : cralwerTable (생성한 테이블명)
○ 저장소 계정 연결
■ AzureWebJobsDashboard와 AzureWebJobsStorage는 동일한 저장소 설정의 alias.
run.py 코드를 적용해주세요.
● https://gist.github.com/nomadekr/7ec5975738cdc27ee2ff5c82c7b0499a 소스코드 복/붙
● 저장하고, 실행해보세요. :D
실행 로그/내역도 편리하게 확인
표준출력된 내용이 Logs에 남습니다.
(한글은 인코딩 이슈로 출력불가)
Azure Storage 탐색기로 Table 보기
Application Insights에서의 여러 Metric
끝.
여러분의 파이썬/장고 페이스메이커가 되겠습니다.
https://fb.com/groups/askdjango

More Related Content

Similar to Azure function 활용한 파이썬 크롤링 스케줄링

장고로 웹서비스 만들기 기초
장고로 웹서비스 만들기   기초장고로 웹서비스 만들기   기초
장고로 웹서비스 만들기 기초Kwangyoun Jung
 
서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)수보 김
 
차정민 (소프트웨어 엔지니어) 이력서 + 경력기술서
차정민 (소프트웨어 엔지니어) 이력서 + 경력기술서차정민 (소프트웨어 엔지니어) 이력서 + 경력기술서
차정민 (소프트웨어 엔지니어) 이력서 + 경력기술서Jeongmin Cha
 
『빠르게 훑어보는 구글 클라우드 플랫폼』 - 맛보기
『빠르게 훑어보는 구글 클라우드 플랫폼』 - 맛보기『빠르게 훑어보는 구글 클라우드 플랫폼』 - 맛보기
『빠르게 훑어보는 구글 클라우드 플랫폼』 - 맛보기복연 이
 
백기선의 스프링 부트
백기선의 스프링 부트백기선의 스프링 부트
백기선의 스프링 부트Keesun Baik
 
파워서포트 가이드
파워서포트 가이드파워서포트 가이드
파워서포트 가이드StartupAlliance
 
[120316] node.js 프로그래밍 5장
[120316] node.js 프로그래밍 5장[120316] node.js 프로그래밍 5장
[120316] node.js 프로그래밍 5장sung ki choi
 
PaaS를 이용한 No Ops 개발
PaaS를 이용한 No Ops 개발PaaS를 이용한 No Ops 개발
PaaS를 이용한 No Ops 개발Chiung Choi
 
20년된 Naver Cafe 서비스가 Modularization으로 진화 하기_정동진.pdf
20년된 Naver Cafe 서비스가 Modularization으로 진화 하기_정동진.pdf20년된 Naver Cafe 서비스가 Modularization으로 진화 하기_정동진.pdf
20년된 Naver Cafe 서비스가 Modularization으로 진화 하기_정동진.pdfeastarJeong2
 
스타트업 사례로 본 로그 데이터 분석 : Tajo on AWS
스타트업 사례로 본 로그 데이터 분석 : Tajo on AWS스타트업 사례로 본 로그 데이터 분석 : Tajo on AWS
스타트업 사례로 본 로그 데이터 분석 : Tajo on AWSMatthew (정재화)
 
Npac(엔팩) 가이드
Npac(엔팩) 가이드Npac(엔팩) 가이드
Npac(엔팩) 가이드VentureSquare
 
Private PaaS with Docker, spring cloud and mesos
Private PaaS with Docker, spring cloud and mesos Private PaaS with Docker, spring cloud and mesos
Private PaaS with Docker, spring cloud and mesos uEngine Solutions
 
Saturday Azure Live 1701 Azure WebApp 개념원리
Saturday Azure Live 1701 Azure WebApp 개념원리Saturday Azure Live 1701 Azure WebApp 개념원리
Saturday Azure Live 1701 Azure WebApp 개념원리Youngjae Kim
 
[테크데이즈2015] 개발하기 바쁜데 푸시와 메시지큐는 있는거 쓸래요
[테크데이즈2015] 개발하기 바쁜데 푸시와 메시지큐는 있는거 쓸래요[테크데이즈2015] 개발하기 바쁜데 푸시와 메시지큐는 있는거 쓸래요
[테크데이즈2015] 개발하기 바쁜데 푸시와 메시지큐는 있는거 쓸래요Youngjae Kim
 
Node.js에서 공공API를 활용해서 개발하기
Node.js에서 공공API를 활용해서 개발하기Node.js에서 공공API를 활용해서 개발하기
Node.js에서 공공API를 활용해서 개발하기Inho Kwon
 
코드로 바로 해버리는 서버리스 오케스트레이션 - Azure Durable Functions
코드로 바로 해버리는 서버리스 오케스트레이션 - Azure Durable Functions코드로 바로 해버리는 서버리스 오케스트레이션 - Azure Durable Functions
코드로 바로 해버리는 서버리스 오케스트레이션 - Azure Durable FunctionsJongin Lee
 
스타트업사례로 본 로그 데이터분석 : Tajo on AWS
스타트업사례로 본 로그 데이터분석 : Tajo on AWS스타트업사례로 본 로그 데이터분석 : Tajo on AWS
스타트업사례로 본 로그 데이터분석 : Tajo on AWSGruter
 
하드웨어 스타트업의 소프트웨어 이야기
하드웨어 스타트업의 소프트웨어 이야기하드웨어 스타트업의 소프트웨어 이야기
하드웨어 스타트업의 소프트웨어 이야기Mijeong Park
 

Similar to Azure function 활용한 파이썬 크롤링 스케줄링 (20)

장고로 웹서비스 만들기 기초
장고로 웹서비스 만들기   기초장고로 웹서비스 만들기   기초
장고로 웹서비스 만들기 기초
 
서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)
 
차정민 (소프트웨어 엔지니어) 이력서 + 경력기술서
차정민 (소프트웨어 엔지니어) 이력서 + 경력기술서차정민 (소프트웨어 엔지니어) 이력서 + 경력기술서
차정민 (소프트웨어 엔지니어) 이력서 + 경력기술서
 
12books
12books12books
12books
 
『빠르게 훑어보는 구글 클라우드 플랫폼』 - 맛보기
『빠르게 훑어보는 구글 클라우드 플랫폼』 - 맛보기『빠르게 훑어보는 구글 클라우드 플랫폼』 - 맛보기
『빠르게 훑어보는 구글 클라우드 플랫폼』 - 맛보기
 
백기선의 스프링 부트
백기선의 스프링 부트백기선의 스프링 부트
백기선의 스프링 부트
 
파워서포트 가이드
파워서포트 가이드파워서포트 가이드
파워서포트 가이드
 
[120316] node.js 프로그래밍 5장
[120316] node.js 프로그래밍 5장[120316] node.js 프로그래밍 5장
[120316] node.js 프로그래밍 5장
 
PaaS를 이용한 No Ops 개발
PaaS를 이용한 No Ops 개발PaaS를 이용한 No Ops 개발
PaaS를 이용한 No Ops 개발
 
20년된 Naver Cafe 서비스가 Modularization으로 진화 하기_정동진.pdf
20년된 Naver Cafe 서비스가 Modularization으로 진화 하기_정동진.pdf20년된 Naver Cafe 서비스가 Modularization으로 진화 하기_정동진.pdf
20년된 Naver Cafe 서비스가 Modularization으로 진화 하기_정동진.pdf
 
스타트업 사례로 본 로그 데이터 분석 : Tajo on AWS
스타트업 사례로 본 로그 데이터 분석 : Tajo on AWS스타트업 사례로 본 로그 데이터 분석 : Tajo on AWS
스타트업 사례로 본 로그 데이터 분석 : Tajo on AWS
 
Npac(엔팩) 가이드
Npac(엔팩) 가이드Npac(엔팩) 가이드
Npac(엔팩) 가이드
 
Private PaaS with Docker, spring cloud and mesos
Private PaaS with Docker, spring cloud and mesos Private PaaS with Docker, spring cloud and mesos
Private PaaS with Docker, spring cloud and mesos
 
Saturday Azure Live 1701 Azure WebApp 개념원리
Saturday Azure Live 1701 Azure WebApp 개념원리Saturday Azure Live 1701 Azure WebApp 개념원리
Saturday Azure Live 1701 Azure WebApp 개념원리
 
[테크데이즈2015] 개발하기 바쁜데 푸시와 메시지큐는 있는거 쓸래요
[테크데이즈2015] 개발하기 바쁜데 푸시와 메시지큐는 있는거 쓸래요[테크데이즈2015] 개발하기 바쁜데 푸시와 메시지큐는 있는거 쓸래요
[테크데이즈2015] 개발하기 바쁜데 푸시와 메시지큐는 있는거 쓸래요
 
Node.js에서 공공API를 활용해서 개발하기
Node.js에서 공공API를 활용해서 개발하기Node.js에서 공공API를 활용해서 개발하기
Node.js에서 공공API를 활용해서 개발하기
 
Light Tutorial Django
Light Tutorial DjangoLight Tutorial Django
Light Tutorial Django
 
코드로 바로 해버리는 서버리스 오케스트레이션 - Azure Durable Functions
코드로 바로 해버리는 서버리스 오케스트레이션 - Azure Durable Functions코드로 바로 해버리는 서버리스 오케스트레이션 - Azure Durable Functions
코드로 바로 해버리는 서버리스 오케스트레이션 - Azure Durable Functions
 
스타트업사례로 본 로그 데이터분석 : Tajo on AWS
스타트업사례로 본 로그 데이터분석 : Tajo on AWS스타트업사례로 본 로그 데이터분석 : Tajo on AWS
스타트업사례로 본 로그 데이터분석 : Tajo on AWS
 
하드웨어 스타트업의 소프트웨어 이야기
하드웨어 스타트업의 소프트웨어 이야기하드웨어 스타트업의 소프트웨어 이야기
하드웨어 스타트업의 소프트웨어 이야기
 

Azure function 활용한 파이썬 크롤링 스케줄링

  • 1. Azure Function 활용한 파이썬 크롤링 스케줄링 AskDjango 이진석
  • 2. 발표자: 이진석 ● 파이썬 중독자 (2004년 v2.4~), 장고 중독자 (2008년 v1.0~) ● 파이썬/장고 질답/교육 서비스 AskDjango 운영자 ● 서울대학교, 벤처경영학, "벤처창업 웹프로그래밍" 파이썬/장고 강사 ● Microsoft Azure MVP (2016년~)
  • 3. "이제 막 파이썬을 시작했습니다." 제가 원할 때 실행시키고, 그 결과를 저장하고 싶어요. 그런데 ... 익혀야할 것이 ... 참 많군요. ... CRON, AZURE, AWS, DATABASE, LINUX ...
  • 5. Microsoft는 서비스 덕후 Azure의 Serverless플랫폼인 Azure Function으로 해결해봅시다. AWS Lambda가 기능적으로는 더 좋긴 합니다만, Azure가 UI가 쉬워요. > 윈도우에 익숙하시다면, 친숙하게 사용하실 수 있어요.
  • 6. Azure Function 은 ... 내가 올린 파이썬/자바스크립트/C#/PHP/Bash/Batch 등의 코드를 파일 단위 실행 지원 코드를 웹을 통한 편집/실행 지원 (물론 Git/Ftp/Dropbox를 통한 배포를 지원) 추가 라이브러리 설치없이도 - 다양한 방법의 코드 실행 방법 지원 => Trigger - "파일 인터페이스"로 여러 Azure 서비스와의 I/O를 지원 => Binding
  • 7. Azure Function은 2가지 버전 1. 올인원 윈도우 IIS 버전 a. 지원하는 언어가 모두 설치되어있어요. b. C#은 빠릿빠릿하게 동작 c. 파이썬은 Experimental 지원. 성능이 엄청 뛰어나진 않지만, 크롤링 목적으로는 쓸만. 2. 커스텀 리눅스 버전 (Preview) a. Docker 버전
  • 8. 윈도우 버전에서 파이썬이 느려요. 파이썬과 라이브러리는 D드라이브에 설치 ● D드라이브는 네트워크 드라이브 ● 매 요청 때마다 파이썬 인터프리터를 실행하는 방식 … ● 매 실행때마다 모듈 파일들을 로딩을 해야하니 … => 느림 :( requests/beautifulsoup4/azure 라이브러리 정도는 괜찮아요. Pandas는 로딩하기에는 너무 큰 … :(
  • 9. 돌려볼 파이썬 코드는 단 32줄 https://gist.github.com/nomadekr/7ec5975738cdc27ee2ff5c82c7b0499a 1. 매 분마다 네이버 실시간 검색어를 크롤링해서 2. Azure Storage Table에 저장합니다. 3. 사용하는 라이브러리는 딱 2개 : requests, BeautifulSoup4
  • 11. "무료 체험" 구독 ● 혜택 - AWS Free Tier와 유사 ○ 첫 달에 24만원 크레딧 ○ 12개월 동안 다양한 무료자원 제공 ● https://azure.microsoft.com/ko-kr/free/ ○ Microsoft 계정이 없으시면 이때 만드시면 됩니다. ○ 가입 시에 신용카드 정보를 입력하지만 이는 확인을 위한 것일 뿐, 유료회원 등록과정은 아닙니다. 유효뢰원은 구독란에 "종량제"로 표시됩니다.
  • 12.
  • 13. Azure Function 앱 생성하기
  • 14. Azure Function 앱 생성하기 ● 앱 이름 : 원하시는 이름 ● 구독 : 무료 체험 ● 리소스 그룹 : 관리 목적의 논리적 그룹. 앱 이름과 같은 이름을 지정하겠습니다. ● 호스팅 계획 ○ 사용 계획 : 쓴 만큼 과금 (월 1백만번까지 무료) ■ 대신 조금 느려요. 파이썬에서는 특히 느려요. ○ App Service 계획 => 이걸 선택 ■ 기존에 사용 중인 App Service 플랜 공유 가능. 추가 과금 없음. ■ 성능을 올릴 수 있어요.
  • 15. Azure Function 앱 생성하기 (2) ● App Service 계획/위치 ○ 새로 만들기 ○ 앱이름과 같은 이름을 지정하겠습니다. ○ 위치 : 데이터센터 위치. Korea Central (서울) 선택. ○ 가격 책정 계층 : S1 표준 선택 ● 위치 : Korea Central(서울) 이 안 뜬다면, Japan East 가 가깝습니다. ● 저장소 : Azure Storage는 단순 정적 파일 저장소(Blob) 뿐만 아니라, NoSQL저장소 역할도 합니다. Function App을 위한 각종 세팅/스케줄링 정보를 담습니다. ○ 앱 이름과 유사하게, 새로 만들어보겠습니다. 이름에 소문자/숫자만 사용가능합니다.
  • 16. Application Function 앱 생성하기 (3) ● Application Insights : 켜두시면, 여러 정보를 획득 가능. ○ 위치는 Don't care. : East US. ○ 대시보드에 고정 : 체크 ○ 만들기 : 클릭 ● 대시보드에 고정 : 체크 ● 만들기 : 클릭
  • 17.
  • 18. Python3 를 설치합시다. ● nuget 에서 지원하는 파이썬 3.6을 설치해봅시다. ● 함수 앱 > 플랫폼 기능 > 고급도구 (KUDU) > Debug Console > CMD ● tools 디렉토리에 파이썬3 설치 CMD> nuget.exe install -Source https://www.siteextensions.net/api/v2/ -OutputDirectory D:homesitetools python361x64 ● Azure Function에서 접근가능한 경로에 Python3 이동 CMD> mv /d/home/site/tools/python361x64.3.6.1.3/content/python361x64/* /d/home/site/tools/ ● 지금부터 실행되는 Azure Function은 d:homesitetoolspython 을 통해 실행됩니다.
  • 19. 필요한 팩키지도 설치해주세요. CMD> d:/home/site/tools/python -m pip install requests beautifulsoup4
  • 20.
  • 21. 파이썬으로 새 함수 만들기 ● Azure Function에서의 "파이썬 새 함수는 "run.py" 파일이 포함된 파이썬 팩키지를 뜻합니다. ● 생성하기 ○ 지정 시간마다 실행을 하기 위해, TimerTrigger를 쓰고 싶지만 기본 템플릿에 없어요. :( ○ 일단 HttpTrigger로 생성하고, 변경해주겠습니다. ○ Python 템플릿 ○ 함수 이름 지정 : "Crawler"
  • 22.
  • 23. 파이썬 버전 확인을 위해, 기본 코드를 변경해줍니다.
  • 24. TimerTrigger 로 변경해줍시다. ● "Cralwer > 통합" : HttpTrigger를 삭제하고, TimerTrigger 등록 ○ 타임스탬프 매개변수 이름 : myTimer ■ 매 실행 시마다, myTimer 이름의 환경변수로 타임스탬프 값이 전달됩니다. ○ 일정 ■ 0 * * * * * ■ 이제 1분 마다 Cralwer의 run.py 가 실행됩니다. ● Tip ○ Scheduler 서비스를 이용해봐도 좋습니다.
  • 25.
  • 26. Schedule ● cron 포맷과 유사 ● "sec min hour day month day-of-week" ○ 0 0 */2 * * * : 매 2시간마다 정시 ○ 0 0 9-17 * * * : 매일 오전 9시~오후5시 정시 ○ 0 30 9 * * 1-5 : 매 평일 오전 9시 30분 ● 디폴트 UTC 시간이 사용됩니다. ○ WEBSITE_TIME_ZONE 환경변수를 통해, 시간대 변경을 지원 ■ Korea Standard Time ■ Eastern Standard Time ■ AUS Eastern Standard Time
  • 27. Azure Table Service ● Azure Storage에서 지원하는 NoSQL 서비스 ○ Azure Storage에서는 Blob, Table, Queue, Files 서비스를 지원합니다. ○ Premium Table 서비스는 CosmosDB ● 모든 레코드는 다음 3가지를 가집니다. ○ PartitionKey : 최대 1KB 크기의 문자열 (필수 지정) ○ RowKey : 최대 1KB 크기의 문자열 (필수 지정) ○ Timestamp : 자동 지정 ● PartitionKey와 RowKey를 조합하여, 각 레코드를 식별합니다.
  • 28. 데이터를 저장할 Table 생성하기 ● Azure Portal > 저장소 계정 > 생성한 저장소 > 테이블 > 새 테이블 ○ "cralwerTable" 이름의 테이블 생성 ● "Cralwer > 통합" : Azure Table Storage 출력 생성 ○ 테이블 매개변수 이름 : tablePath (파이썬 코드 내에서 참조할 환경변수 명) ○ 테이블 이름 : cralwerTable (생성한 테이블명) ○ 저장소 계정 연결 ■ AzureWebJobsDashboard와 AzureWebJobsStorage는 동일한 저장소 설정의 alias.
  • 29.
  • 30.
  • 31. run.py 코드를 적용해주세요. ● https://gist.github.com/nomadekr/7ec5975738cdc27ee2ff5c82c7b0499a 소스코드 복/붙 ● 저장하고, 실행해보세요. :D
  • 32. 실행 로그/내역도 편리하게 확인 표준출력된 내용이 Logs에 남습니다. (한글은 인코딩 이슈로 출력불가)
  • 35. 끝. 여러분의 파이썬/장고 페이스메이커가 되겠습니다. https://fb.com/groups/askdjango