Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

708 views

Published on

Python Korea 2017년 12월 세미나

Published in: Software
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

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

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

×