Upload
kyoungchan-lee
View
2.045
Download
2
Embed Size (px)
DESCRIPTION
Flask, Celery 연동 소개 발표 자료 (2013.7.30) Python Korea 강남
Citation preview
Flask,����������� ������������������ Celery����������� ������������������ 연동����������� ������������������ 소개����������� ������������������
이경찬����������� ������������������ (leekchan.com)����������� ������������������
Python����������� ������������������ Korea����������� ������������������ 강남����������� ������������������
간단한����������� ������������������ 소개...����������� ������������������
2����������� ������������������ /����������� ������������������ 12����������� ������������������
• 이경찬����������� ������������������ (http://leekchan.com)����������� ������������������ • 2010년����������� ������������������ 부터����������� ������������������ Django����������� ������������������ 사용����������� ������������������ • Django����������� ������������������ 로����������� ������������������ n개의����������� ������������������ 서비스����������� ������������������ 개발����������� ������������������ (n����������� ������������������ <=����������� ������������������ 5)����������� ������������������ • 현재는����������� ������������������ Django로����������� ������������������ 애드투페이퍼����������� ������������������ 서비스����������� ������������������ 개발����������� ������������������ 및����������� ������������������ 운영중����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ (http://add2paper.github.io)����������� ������������������
• Flask도����������� ������������������ 매우����������� ������������������ 좋네요!����������� ������������������ ����������� ������������������
Celery?����������� ������������������
3����������� ������������������ /����������� ������������������ 12����������� ������������������
뭐����������� ������������������ 이리����������� ������������������ 어렵게����������� ������������������ 써놨어...����������� ������������������
4����������� ������������������ /����������� ������������������ 12����������� ������������������
Celery?����������� ������������������
5����������� ������������������ /����������� ������������������ 12����������� ������������������
오래 걸리는 작업들을 나에게 던지면
알아서 동시에 처리해주겠소
사용법����������� ������������������ –����������� ������������������ Step1����������� ������������������
6����������� ������������������ /����������� ������������������ 12����������� ������������������
Celery 한테 던지고 싶은 함수에 @celery.task() 를 붙인다.
@celery.task() def push_send(message, token): 푸시 전송 코드…
사용법����������� ������������������ –����������� ������������������ Step2����������� ������������������
7����������� ������������������ /����������� ������������������ 12����������� ������������������
push_send.delay(message, token)
Celery한테 던질때는 함수 뒤에 .delay만 붙여주면 된다.
사용법����������� ������������������ –����������� ������������������ Step3����������� ������������������
8����������� ������������������ /����������� ������������������ 12����������� ������������������
Celery가 열심히 일하는걸 지켜본다… 속도가 마음에 안들면… 새 worker를 투입한다. concurrency가 30인 worker를 4개 돌리면 = 120개의 Task가 알아서 동시에 처리된다 (동시에 처리할 수 있는 작업 수 = concurrency * worker)
사용예����������� ������������������ -����������� ������������������ 1����������� ������������������
9����������� ������������������ /����������� ������������������ 12����������� ������������������
문제 : 회원 가입 시 이메일 인증 메일을 바로 보내줘야 하는데 외부 SMTP 서버 응답 시간이 3초여서 회원가입 처리가 엄청 느려진다… (유저는 3초 넘게 응답을 기다려야 함.) 해결 : 인증 메일 전송 Task는 Celery한테 던지고 유저에게는 바로 응답을 준다! (응답시간 -3초 !!!)
사용예����������� ������������������ -����������� ������������������ 2����������� ������������������
10����������� ������������������ /����������� ������������������ 12����������� ������������������
문제 : 수십만 건의 푸시 메시지를 발송해야 하는데 너무 오래 걸린다 해결 : Celery Worker를 n개 띄우고 Celery에 Task를 모두 던진다. (Worker를 많이 띄우고 Celery 서버를 많이 두면 동시 발송 개수가 계속 증가한다.)
Flask,����������� ������������������ Celery����������� ������������������ 연동����������� ������������������ 시연����������� ������������������
11����������� ������������������ /����������� ������������������ 12����������� ������������������
1. virtualenv 세팅 2. Flask, Celery 설치 3. Broker 설명 및 선택 4. Flask, Celery 연동 5. Celery 프로세스 띄워보기 6. 간단한 Task 던져보기 7. Dummy Task를 무한 생성해서 던져보기
감사합니다����������� ������������������ ����������� ������������������
12����������� ������������������ /����������� ������������������ 12����������� ������������������