19. Django + Celery Beat
• Celery documentation: Periodic Tasks
• 특정 시간에 수행될 작업을 설정합시다.
Full Source
20. Redis
• Redis is an open source (BSD licensed), in-memory data
structure store, used as a database, cache and message
broker.
• Task를 worker에게 전달합니다.
• 대안: RabbitMQ, Amazon SQS
21. Redis: 설치에서 적용까지
• 받아서 → 압축 해제 → make → redis-server
• 환경 변수 설정
• movie_scheduler/celery.py
$ export REDIS_URL=redis://
Full Source
22. Django + Celery Beat + Redis
• Django에서 Celery를 쓰기 위한 준비가 끝났습니다.
• Celery Beat + Worker 실행 (이 방법이 권장됨)
• 이런 방법도 있습니다.
$ celery -A movie_scheduler beat
$ celery -A movie_scheduler worker
$ celery -A movie_scheduler worker -B
23. CJ E&M 계열 채널 편성표 수집
Requests로 가져오고, BeautifulSoup로 Parsing
Full Source
40. Heroku 설정
• 기본 Tutorial부터 시작해 봅시다.
• Getting Started on Heroku with Python
• Procfile 설정
web: gunicorn movie_scheduler.wsgi --log-file -
worker: celery -A movie_scheduler worker --loglevel=DEBUG -B --concurrency=1
42. PostgreSQL 사용하기
• Django 프로젝트인 경우, 자동으로 PostgreSQL과 연결됩니다.
(Django가 아니면?)
• DATABASE_URL 환경 변수에 주소가 지정됩니다.
• dj-database-url 패키지가 필요합니다.
• 프로젝트의 settings.py 파일을 수정해야 합니다.
43. Redis 사용하기
• 다음 명령으로 Redis를 추가해 줍니다.
• 추가가 완료되면, application이 자동으로 시작됩니다.
• 환경 변수가 생성된 것을 확인해 봅시다.
$ heroku addons:create heroku-redis:hobby-dev -a <App 이름>
$ heroku config | grep REDIS
REDIS_URL: redis://h:asdfqwer1234asdf@ec2-111-1-1-1.compute-1.amazonaws.com:111
44. Python으로 만든 걸 왜 인식 못할까?
• ‘requirements.txt’ 파일이 없어서 그렇습니다.
• ‘requirement.txt’ 라고 되어 있으면?
45. 편성표 수집을 왜 안 할까?
• Free Dyno인 경우, 30분 동안 접속이 없으면…
• web, worker dyno 모두 sleep
46. 해결책: New Relic
• APM Tool
• 아래 명령으로 설치합니다.
• 로컬 환경에도 pip으로 설치해 주세요.
$ heroku addons:create newrelic:wayne
$ pip install newrelic