SlideShare a Scribd company logo
Celery의 빛과 그림자
PYCON KOREA 2015
정민영
THE BEATPACKING COMPANY
발표자
• 정민영
• 비트패킹컴퍼니 CTO
• PyconKR 2014/Deview 2014 ‘제약을 넘어: Gevent’
발표 (Deview 2014 Top 10)
• AWSKRUG Founder / AWS Community Hero
이런 분들을 위해 준비했어요!
• 비동기 처리를 해야되긴 한다던데… 뭐가 뭔지 모르겠던 분!
• Celery가 뭔가 좋은거 같긴한데…써도 되나 의심스러우셨던
분들!
• Celery를 쓰고 있는데 뭔가 작동이 이상해서 고민이셨던 분
들!
Celery?
Distributed
Task
Queue
혹은
(종합적인)비동기 처리기
비동기 처리기?
비동기 처리기는 왜 필요한걸까?
고갱님 어떤 서비스
진지하게	 가입을	 해볼까?
이메일,	 이름,	 ..	 좋아	 가입!
비동기 처리기는 왜 필요한걸까?
어떤 서비스
진지하게	 가입을	 해볼까?
이메일,	 이름,	 ..	 좋아	 가입!
에..	 고객님	 프로필	 사진을	 
업로드하고..	  크기도	  적당히	 
3개쯤	 준비해두고..
고갱님
비동기 처리기는 왜 필요한걸까?
어떤 서비스
진지하게	 가입을	 해볼까?
이메일,	 이름,	 ..	 좋아	 가입!
에..	 고객님	 프로필	 사진을	 
업로드하고..	  크기도	  적당히	 
3개쯤	 준비해두고..	 요즘	 유
행이니까	 배경	 블러도	 만들
어	 두고…
고갱님
비동기 처리기는 왜 필요한걸까?
어떤 서비스
진지하게	 가입을	 해볼까?
이메일,	 이름,	 ..	 좋아	 가입!
에..	 고객님	 프로필	 사진을	 
업로드하고..	  크기도	  적당히	 
3개쯤	 준비해두고..	 요즘	 유
행이니까	 배경	 블러도	 만들
어	 두고…	 아	 친구도	 찾아
드려야	 하는데	 까먹을뻔	 했
네	 데헷(*^^*)..
고갱님
비동기 처리기는 왜 필요한걸까?
어떤 서비스
에..	 고객님	 프로필	 사진을	 
업로드하고..	  크기도	  적당히	 
3개쯤	 준비해두고..	 요즘	 유
행이니까	 배경	 블러도	 만들
어	 두고…	 아	 친구도	 찾아
드려야	 하는데	 까먹을뻔	 했
네	 데헷(*^^*)..	 자	 다했다	 
이제	 이메일	 보내드려야지!
비동기 처리기는 왜 필요한걸까?
어떤 서비스
어…어..	 고..고갱님??
비동기 처리기는 왜 필요한걸까?
• 비동기 처리기는 동기적으로 수행하지 않아도 되는 일들을 처
리해 주는 역활을 합니다.
• 즉 결과를 즉시 받을 필요 없거나, 지연하여 처리해야 되는 일
들을 보통 처리합니다.
• 물론 그것이 제대로 처리가 되지 않아도 된다는 이야기는 아
니기 때문에, 별도의 잘 만들어진 처리기가 필요해요!
그런데 왜 꼭
여야 하나요?
근데 왜 꼭 Celery여야 하죠?
• 완전 쉽게 연동할 수 있어요!
• (아마도) 당신이 상상할 수 있는 모든 기능을 제공해요!
• 일단 남들이 제일 많이 써요!
Celery… 너란 채소….
완전 쉽게 연동할 수 있어요!
from
 celery
 import
 Celery

app
 =
 Celery('hello',

 
 
 
 
 
 
 
 
 
 
 
 
 broker='amqp://guest@localhost//')
 
@app.task

def
 add(a,
 b):

 
 
 
 return
 a
 +
 b
완전 쉽게 연동할 수 있어요!
from
 tasks
 import
 add

add.delay(1,
 2)
 
완전 쉽게 연동할 수 있어요!
from
 tasks
 import
 add



r
 =
 add(1,
 2)

r.get(timeout=1)
 
완전 쉽게 연동할 수 있어요!
(아마도) 당신이 상상할 수 있는 모든 기능
(아마도) 당신이 상상할 수 있는 모든 기능
(아마도) 당신이 상상할 수 있는 모든 기능
T.delay(arg,
 kwarg=value)
 
!
T.apply_async((arg,
 ),
 {'kwarg':
 value})
 
!
T.apply_async(countdown=10)
 
!
T.apply_async(eta=now
 +
 timedelta(seconds=10))
 
!
T.apply_async(countdown=60,
 expires=120)
 
!
T.apply_async(expires=now
 +
 timedelta(days=2))
 
(아마도) 당신이 상상할 수 있는 모든 기능
 from celery import chain

# 2 + 2 + 4 + 8
 res = chain(add.s(2, 2), add.s(4), add.s(8))()
 res.get()
16
(아마도) 당신이 상상할 수 있는 모든 기능
 from celery import chain
!
# 2 + 2 + 4 + 8
 res = chain(add.s(2, 2), add.s(4), add.s(8))()
 res.get()
16
!
 (add.s(2, 2) | add.s(4) | add.s(8))().get()
16
(아마도) 당신이 상상할 수 있는 모든 기능
new_user_workflow = (create_user.s() | group(
import_contacts.s(),
send_welcome_email.s())
)
new_user_workflow.delay(username='artv',
first='Art',
last='Vandelay',
email='art@vandelay.com')
(아마도) 당신이 상상할 수 있는 모든 기능
from datetime import timedelta
!
CELERYBEAT_SCHEDULE = {
'add-every-30-seconds': {
'task': 'tasks.add',
'schedule': timedelta(seconds=30),
'args': (16, 16)
},
}
!
CELERY_TIMEZONE = 'UTC'
(아마도) 당신이 상상할 수 있는 모든 기능
(아마도) 당신이 상상할 수 있는 모든 기능
뭐… 좋은건 알겠는데….
There ain't no such thing as a free lunch
There ain't no such thing as a free lunch
– kkung
비트 성장의 가장 첫번째 난관은 셀러ㄹ…
Celery의 빛과 그림자

More Related Content

What's hot

MongoDB et Elasticsearch, meilleurs ennemis ?
MongoDB et Elasticsearch, meilleurs ennemis ?MongoDB et Elasticsearch, meilleurs ennemis ?
MongoDB et Elasticsearch, meilleurs ennemis ?
Sébastien Prunier
 
Python and MongoDB
Python and MongoDBPython and MongoDB
Python and MongoDB
Christiano Anderson
 
MongoDB
MongoDBMongoDB
MongoDB
nikhil2807
 
Json
JsonJson
Mongodb basics and architecture
Mongodb basics and architectureMongodb basics and architecture
Mongodb basics and architecture
Bishal Khanal
 
File Uploading in PHP
File Uploading in PHPFile Uploading in PHP
File Uploading in PHP
Idrees Hussain
 
MongoDB Database Replication
MongoDB Database ReplicationMongoDB Database Replication
MongoDB Database Replication
Mehdi Valikhani
 
An Introduction to the DOM
An Introduction to the DOMAn Introduction to the DOM
An Introduction to the DOM
Mindy McAdams
 
[Pgday.Seoul 2020] SQL Tuning
[Pgday.Seoul 2020] SQL Tuning[Pgday.Seoul 2020] SQL Tuning
[Pgday.Seoul 2020] SQL Tuning
PgDay.Seoul
 
CSS Dasar #1 : Intro
CSS Dasar #1 : IntroCSS Dasar #1 : Intro
CSS Dasar #1 : Intro
Sandhika Galih
 
PostgreSQL- An Introduction
PostgreSQL- An IntroductionPostgreSQL- An Introduction
PostgreSQL- An Introduction
Smita Prasad
 
MongoDB Performance Tuning
MongoDB Performance TuningMongoDB Performance Tuning
MongoDB Performance Tuning
Puneet Behl
 
MongoDB 101
MongoDB 101MongoDB 101
MongoDB 101
Abhijeet Vaikar
 
Intro To Mongo Db
Intro To Mongo DbIntro To Mongo Db
Intro To Mongo Db
chriskite
 
elasticsearch_적용 및 활용_정리
elasticsearch_적용 및 활용_정리elasticsearch_적용 및 활용_정리
elasticsearch_적용 및 활용_정리
Junyi Song
 
Django admin site 커스텀하여 적극적으로 활용하기
Django admin site 커스텀하여 적극적으로 활용하기Django admin site 커스텀하여 적극적으로 활용하기
Django admin site 커스텀하여 적극적으로 활용하기
영우 박
 
Guida pratica-html-e-css
Guida pratica-html-e-cssGuida pratica-html-e-css
Guida pratica-html-e-css
nickyes
 
HTML, CSS And JAVASCRIPT!
HTML, CSS And JAVASCRIPT!HTML, CSS And JAVASCRIPT!
HTML, CSS And JAVASCRIPT!
Syahmi RH
 
[245] presto 내부구조 파헤치기
[245] presto 내부구조 파헤치기[245] presto 내부구조 파헤치기
[245] presto 내부구조 파헤치기
NAVER D2
 
7.-Bootstrap-5-report powerpoint presentation
7.-Bootstrap-5-report powerpoint presentation7.-Bootstrap-5-report powerpoint presentation
7.-Bootstrap-5-report powerpoint presentation
JohnLagman3
 

What's hot (20)

MongoDB et Elasticsearch, meilleurs ennemis ?
MongoDB et Elasticsearch, meilleurs ennemis ?MongoDB et Elasticsearch, meilleurs ennemis ?
MongoDB et Elasticsearch, meilleurs ennemis ?
 
Python and MongoDB
Python and MongoDBPython and MongoDB
Python and MongoDB
 
MongoDB
MongoDBMongoDB
MongoDB
 
Json
JsonJson
Json
 
Mongodb basics and architecture
Mongodb basics and architectureMongodb basics and architecture
Mongodb basics and architecture
 
File Uploading in PHP
File Uploading in PHPFile Uploading in PHP
File Uploading in PHP
 
MongoDB Database Replication
MongoDB Database ReplicationMongoDB Database Replication
MongoDB Database Replication
 
An Introduction to the DOM
An Introduction to the DOMAn Introduction to the DOM
An Introduction to the DOM
 
[Pgday.Seoul 2020] SQL Tuning
[Pgday.Seoul 2020] SQL Tuning[Pgday.Seoul 2020] SQL Tuning
[Pgday.Seoul 2020] SQL Tuning
 
CSS Dasar #1 : Intro
CSS Dasar #1 : IntroCSS Dasar #1 : Intro
CSS Dasar #1 : Intro
 
PostgreSQL- An Introduction
PostgreSQL- An IntroductionPostgreSQL- An Introduction
PostgreSQL- An Introduction
 
MongoDB Performance Tuning
MongoDB Performance TuningMongoDB Performance Tuning
MongoDB Performance Tuning
 
MongoDB 101
MongoDB 101MongoDB 101
MongoDB 101
 
Intro To Mongo Db
Intro To Mongo DbIntro To Mongo Db
Intro To Mongo Db
 
elasticsearch_적용 및 활용_정리
elasticsearch_적용 및 활용_정리elasticsearch_적용 및 활용_정리
elasticsearch_적용 및 활용_정리
 
Django admin site 커스텀하여 적극적으로 활용하기
Django admin site 커스텀하여 적극적으로 활용하기Django admin site 커스텀하여 적극적으로 활용하기
Django admin site 커스텀하여 적극적으로 활용하기
 
Guida pratica-html-e-css
Guida pratica-html-e-cssGuida pratica-html-e-css
Guida pratica-html-e-css
 
HTML, CSS And JAVASCRIPT!
HTML, CSS And JAVASCRIPT!HTML, CSS And JAVASCRIPT!
HTML, CSS And JAVASCRIPT!
 
[245] presto 내부구조 파헤치기
[245] presto 내부구조 파헤치기[245] presto 내부구조 파헤치기
[245] presto 내부구조 파헤치기
 
7.-Bootstrap-5-report powerpoint presentation
7.-Bootstrap-5-report powerpoint presentation7.-Bootstrap-5-report powerpoint presentation
7.-Bootstrap-5-report powerpoint presentation
 

Similar to Celery의 빛과 그림자

피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220
피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220
피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220
Seomgi Han
 
멸종하는 공룡이 되지 않으려면
멸종하는 공룡이 되지 않으려면멸종하는 공룡이 되지 않으려면
멸종하는 공룡이 되지 않으려면
Byeongsu Kang
 
10만 라인, 26280시간의 이야기
10만 라인, 26280시간의 이야기10만 라인, 26280시간의 이야기
10만 라인, 26280시간의 이야기
Minyoung Jeong
 
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]
David Lee
 
Place site Design
Place site DesignPlace site Design
Place site Design
HaYoungChoi17
 
DevOps는 원격근무를 추구하면 안되는 걸까?
DevOps는 원격근무를 추구하면 안되는 걸까?DevOps는 원격근무를 추구하면 안되는 걸까?
DevOps는 원격근무를 추구하면 안되는 걸까?
Jesang Yoon
 
201803 파이썬 세미나
201803 파이썬 세미나201803 파이썬 세미나
201803 파이썬 세미나
JeongHwan Kim
 
온라인 주문 서비스를 서버리스 아키텍쳐로 구축하기 - 김태우(Classmethod) :: AWS Community Day Online 2020
온라인 주문 서비스를 서버리스 아키텍쳐로 구축하기 - 김태우(Classmethod) :: AWS Community Day Online 2020온라인 주문 서비스를 서버리스 아키텍쳐로 구축하기 - 김태우(Classmethod) :: AWS Community Day Online 2020
온라인 주문 서비스를 서버리스 아키텍쳐로 구축하기 - 김태우(Classmethod) :: AWS Community Day Online 2020
AWSKRUG - AWS한국사용자모임
 
Scalable webservice
Scalable webserviceScalable webservice
Scalable webservice
DaeMyung Kang
 
HeadFisrt Servlet&JSP Chapter 5
HeadFisrt Servlet&JSP Chapter 5HeadFisrt Servlet&JSP Chapter 5
HeadFisrt Servlet&JSP Chapter 5
J B
 
코드로 바로 해버리는 서버리스 오케스트레이션 - Azure Durable Functions
코드로 바로 해버리는 서버리스 오케스트레이션 - Azure Durable Functions코드로 바로 해버리는 서버리스 오케스트레이션 - Azure Durable Functions
코드로 바로 해버리는 서버리스 오케스트레이션 - Azure Durable Functions
Jongin Lee
 
Go revel 컨셉_정리
Go revel 컨셉_정리Go revel 컨셉_정리
Go revel 컨셉_정리
라한사 아
 
Call back 발표자료
Call back 발표자료Call back 발표자료
Call back 발표자료
JangHee Lee
 
AngularJS In Production
AngularJS In ProductionAngularJS In Production
AngularJS In Production
MooYeol Lee
 
클라우드 시대에 맞는 사이트 신뢰성 엔지니어
클라우드 시대에 맞는 사이트 신뢰성 엔지니어클라우드 시대에 맞는 사이트 신뢰성 엔지니어
클라우드 시대에 맞는 사이트 신뢰성 엔지니어
JeongHun Byeon
 
20180602 BIT computer - AWS를 활용한 클라우드 기반 웹 개발 1주차
20180602 BIT computer - AWS를 활용한 클라우드 기반 웹 개발 1주차20180602 BIT computer - AWS를 활용한 클라우드 기반 웹 개발 1주차
20180602 BIT computer - AWS를 활용한 클라우드 기반 웹 개발 1주차
Jongwon Han
 
NET 최선단 기술에 의한 고성능 웹 애플리케이션
NET 최선단 기술에 의한 고성능 웹 애플리케이션NET 최선단 기술에 의한 고성능 웹 애플리케이션
NET 최선단 기술에 의한 고성능 웹 애플리케이션
흥배 최
 
WTM 2018 2개월차 신입 백엔드 개발자의 따끈따끈 개발 썰
WTM 2018 2개월차 신입 백엔드 개발자의 따끈따끈 개발 썰WTM 2018 2개월차 신입 백엔드 개발자의 따끈따끈 개발 썰
WTM 2018 2개월차 신입 백엔드 개발자의 따끈따끈 개발 썰
Eunhyang Kim
 
[1B6]Realm a database for android & ios
[1B6]Realm a database for android & ios[1B6]Realm a database for android & ios
[1B6]Realm a database for android & ios
NAVER D2
 
Golang+on+analytics+and+blockchain
Golang+on+analytics+and+blockchainGolang+on+analytics+and+blockchain
Golang+on+analytics+and+blockchain
NAVER Engineering
 

Similar to Celery의 빛과 그림자 (20)

피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220
피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220
피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220
 
멸종하는 공룡이 되지 않으려면
멸종하는 공룡이 되지 않으려면멸종하는 공룡이 되지 않으려면
멸종하는 공룡이 되지 않으려면
 
10만 라인, 26280시간의 이야기
10만 라인, 26280시간의 이야기10만 라인, 26280시간의 이야기
10만 라인, 26280시간의 이야기
 
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]
 
Place site Design
Place site DesignPlace site Design
Place site Design
 
DevOps는 원격근무를 추구하면 안되는 걸까?
DevOps는 원격근무를 추구하면 안되는 걸까?DevOps는 원격근무를 추구하면 안되는 걸까?
DevOps는 원격근무를 추구하면 안되는 걸까?
 
201803 파이썬 세미나
201803 파이썬 세미나201803 파이썬 세미나
201803 파이썬 세미나
 
온라인 주문 서비스를 서버리스 아키텍쳐로 구축하기 - 김태우(Classmethod) :: AWS Community Day Online 2020
온라인 주문 서비스를 서버리스 아키텍쳐로 구축하기 - 김태우(Classmethod) :: AWS Community Day Online 2020온라인 주문 서비스를 서버리스 아키텍쳐로 구축하기 - 김태우(Classmethod) :: AWS Community Day Online 2020
온라인 주문 서비스를 서버리스 아키텍쳐로 구축하기 - 김태우(Classmethod) :: AWS Community Day Online 2020
 
Scalable webservice
Scalable webserviceScalable webservice
Scalable webservice
 
HeadFisrt Servlet&JSP Chapter 5
HeadFisrt Servlet&JSP Chapter 5HeadFisrt Servlet&JSP Chapter 5
HeadFisrt Servlet&JSP Chapter 5
 
코드로 바로 해버리는 서버리스 오케스트레이션 - Azure Durable Functions
코드로 바로 해버리는 서버리스 오케스트레이션 - Azure Durable Functions코드로 바로 해버리는 서버리스 오케스트레이션 - Azure Durable Functions
코드로 바로 해버리는 서버리스 오케스트레이션 - Azure Durable Functions
 
Go revel 컨셉_정리
Go revel 컨셉_정리Go revel 컨셉_정리
Go revel 컨셉_정리
 
Call back 발표자료
Call back 발표자료Call back 발표자료
Call back 발표자료
 
AngularJS In Production
AngularJS In ProductionAngularJS In Production
AngularJS In Production
 
클라우드 시대에 맞는 사이트 신뢰성 엔지니어
클라우드 시대에 맞는 사이트 신뢰성 엔지니어클라우드 시대에 맞는 사이트 신뢰성 엔지니어
클라우드 시대에 맞는 사이트 신뢰성 엔지니어
 
20180602 BIT computer - AWS를 활용한 클라우드 기반 웹 개발 1주차
20180602 BIT computer - AWS를 활용한 클라우드 기반 웹 개발 1주차20180602 BIT computer - AWS를 활용한 클라우드 기반 웹 개발 1주차
20180602 BIT computer - AWS를 활용한 클라우드 기반 웹 개발 1주차
 
NET 최선단 기술에 의한 고성능 웹 애플리케이션
NET 최선단 기술에 의한 고성능 웹 애플리케이션NET 최선단 기술에 의한 고성능 웹 애플리케이션
NET 최선단 기술에 의한 고성능 웹 애플리케이션
 
WTM 2018 2개월차 신입 백엔드 개발자의 따끈따끈 개발 썰
WTM 2018 2개월차 신입 백엔드 개발자의 따끈따끈 개발 썰WTM 2018 2개월차 신입 백엔드 개발자의 따끈따끈 개발 썰
WTM 2018 2개월차 신입 백엔드 개발자의 따끈따끈 개발 썰
 
[1B6]Realm a database for android & ios
[1B6]Realm a database for android & ios[1B6]Realm a database for android & ios
[1B6]Realm a database for android & ios
 
Golang+on+analytics+and+blockchain
Golang+on+analytics+and+blockchainGolang+on+analytics+and+blockchain
Golang+on+analytics+and+blockchain
 

Celery의 빛과 그림자