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

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

Embed Size (px)

DESCRIPTION

Flask, Celery 연동 소개 발표 자료 (2013.7.30) Python Korea 강남

Citation preview

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����������� ������������������