Top Banner
Flask, Celery 연동 소개 이경찬 (leekchan.com) Python Korea 강남
12

[Python Korea 강남] Flask, Celery 연동 소개

Jun 22, 2015

Download

Technology

Kyoungchan Lee

Flask, Celery 연동 소개 발표 자료 (2013.7.30)

Python Korea 강남
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: [Python Korea 강남] Flask, Celery 연동 소개

Flask,����������� ������������������  Celery����������� ������������������  연동����������� ������������������  소개����������� ������������������  

이경찬����������� ������������������  (leekchan.com)����������� ������������������  

Python����������� ������������������  Korea����������� ������������������  강남����������� ������������������  

Page 2: [Python Korea 강남] Flask, Celery 연동 소개

간단한����������� ������������������  소개...����������� ������������������  

2����������� ������������������  /����������� ������������������  12����������� ������������������  

• 이경찬����������� ������������������  (http://leekchan.com)����������� ������������������  • 2010년����������� ������������������  부터����������� ������������������  Django����������� ������������������  사용����������� ������������������  • Django����������� ������������������  로����������� ������������������  n개의����������� ������������������  서비스����������� ������������������  개발����������� ������������������  (n����������� ������������������  <=����������� ������������������  5)����������� ������������������  • 현재는����������� ������������������  Django로����������� ������������������  애드투페이퍼����������� ������������������  서비스����������� ������������������  개발����������� ������������������  및����������� ������������������  운영중����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  (http://add2paper.github.io)����������� ������������������  

• Flask도����������� ������������������  매우����������� ������������������  좋네요!����������� ������������������  ����������� ������������������  

Page 3: [Python Korea 강남] Flask, Celery 연동 소개

Celery?����������� ������������������  

3����������� ������������������  /����������� ������������������  12����������� ������������������  

Page 4: [Python Korea 강남] Flask, Celery 연동 소개

뭐����������� ������������������  이리����������� ������������������  어렵게����������� ������������������  써놨어...����������� ������������������  

4����������� ������������������  /����������� ������������������  12����������� ������������������  

Page 5: [Python Korea 강남] Flask, Celery 연동 소개

Celery?����������� ������������������  

5����������� ������������������  /����������� ������������������  12����������� ������������������  

오래 걸리는 작업들을 나에게 던지면

알아서 동시에 처리해주겠소

Page 6: [Python Korea 강남] Flask, Celery 연동 소개

사용법����������� ������������������  ­–����������� ������������������  Step1����������� ������������������  

6����������� ������������������  /����������� ������������������  12����������� ������������������  

Celery 한테 던지고 싶은 함수에 @celery.task() 를 붙인다.

@celery.task() def push_send(message, token): 푸시 전송 코드…

Page 7: [Python Korea 강남] Flask, Celery 연동 소개

사용법����������� ������������������  ­–����������� ������������������  Step2����������� ������������������  

7����������� ������������������  /����������� ������������������  12����������� ������������������  

push_send.delay(message, token)

Celery한테 던질때는 함수 뒤에 .delay만 붙여주면 된다.

Page 8: [Python Korea 강남] Flask, Celery 연동 소개

사용법����������� ������������������  ­–����������� ������������������  Step3����������� ������������������  

8����������� ������������������  /����������� ������������������  12����������� ������������������  

Celery가 열심히 일하는걸 지켜본다… 속도가 마음에 안들면… 새 worker를 투입한다. concurrency가 30인 worker를 4개 돌리면 = 120개의 Task가 알아서 동시에 처리된다 (동시에 처리할 수 있는 작업 수 = concurrency * worker)

Page 9: [Python Korea 강남] Flask, Celery 연동 소개

사용예����������� ������������������  -����������� ������������������  1����������� ������������������  

9����������� ������������������  /����������� ������������������  12����������� ������������������  

문제 : 회원 가입 시 이메일 인증 메일을 바로 보내줘야 하는데 외부 SMTP 서버 응답 시간이 3초여서 회원가입 처리가 엄청 느려진다… (유저는 3초 넘게 응답을 기다려야 함.) 해결 : 인증 메일 전송 Task는 Celery한테 던지고 유저에게는 바로 응답을 준다! (응답시간 -3초 !!!)

Page 10: [Python Korea 강남] Flask, Celery 연동 소개

사용예����������� ������������������  -����������� ������������������  2����������� ������������������  

10����������� ������������������  /����������� ������������������  12����������� ������������������  

문제 : 수십만 건의 푸시 메시지를 발송해야 하는데 너무 오래 걸린다 해결 : Celery Worker를 n개 띄우고 Celery에 Task를 모두 던진다. (Worker를 많이 띄우고 Celery 서버를 많이 두면 동시 발송 개수가 계속 증가한다.)

Page 11: [Python Korea 강남] Flask, Celery 연동 소개

Flask,����������� ������������������  Celery����������� ������������������  연동����������� ������������������  시연����������� ������������������  

11����������� ������������������  /����������� ������������������  12����������� ������������������  

1. virtualenv 세팅 2. Flask, Celery 설치 3. Broker 설명 및 선택 4. Flask, Celery 연동 5. Celery 프로세스 띄워보기 6. 간단한 Task 던져보기 7. Dummy Task를 무한 생성해서 던져보기

Page 12: [Python Korea 강남] Flask, Celery 연동 소개

감사합니다����������� ������������������  ����������� ������������������  

12����������� ������������������  /����������� ������������������  12����������� ������������������