* 작업환경
django 버전 : 1.10.1
celery : 3.1.23
celery, rabbitmq 설치 방법은 워낙 많이 있어서 생략하겠음...
1. 쟝고 프로젝트를 만든 후
(SampleProject로 부르겠음)
SampleProject 폴더 하위에
다음 두 파일을 생성
- celery.py
from __future__ import absolute_import
from celery import Celery
app = Celery('SampleProject',
broker='amqp://',
backend='amqp://guest:guest@localhost:5672//',
include=['SampleProject.tasks'])
- tasks.py
from __future__ import absolute_import
from SampleProject.celery import app
@app.task
def add(x, y):
return x + y
@app.task
def mul(x, y):
return x * y
@app.task
def xsum(numbers):
return sum(numbers)
만든 후
2. celery worker 서버 구동!
shell 에서
$ celery -A SampleProject worker --loglevel=info 로 서버로 구동
위 명령어를 입력했는데 서버가 제대로 동작을 하지 않는 경우가 있음
-------------- celery@
---- **** -----
--- * *** * -- Linux-3.
-- * - **** ---
- ** ---------- [config]
- ** ---------- .> broker: amqp://
- ** ---------- .> app: ~~~
- ** ---------- .> concurrency: 1 (prefork)
- *** --- * --- .> events: OFF (enable -E to monitor this worker)
-- ******* ----
--- ***** ----- [queues]
-------------- .> celery exchange=
Segmentation fault (core dumped)
위 처럼 뜨는 경우가 있는데
sudo apt-get remove python-librabbitmq 한 후
sudo pip install librabbitmq 하면 해결!!
여기 참조했음
https://bugs.launchpad.net/ubuntu/+source/python-librabbitmq/+bug/1353269
3. 서버 실행 잘 됐으면
shell 창 하나 더 열어서
python3 manage.py shell
from SampleProject.tasks import *
add.delay(4,4) 해보면
worker서버 창에
[2016-09-02 08:54:41,147: INFO/MainProcess] Received task: SampleProject.tasks.add[50ad03b8-8c1f-41d2-aeac-c4f575da499f]
[2016-09-02 08:54:41,154: INFO/MainProcess] Task SampleProject.tasks.add[50ad03b8-8c1f-41d2-aeac-c4f575da499f] succeeded in 0.00638406700091s: 8
위와 같이 잘 뜨면 성공!!!
'프로그래밍 > Python' 카테고리의 다른 글
heroku에 django 앱배포하기 (1) | 2017.12.21 |
---|---|
Django에서 manage.py shell 사용 않고 모델 사용해서 스크립트 작성 할 때 (0) | 2017.09.27 |
Django ForeignKey로 연결된 모델의 필드로 필터할 때 참조 (0) | 2016.06.01 |
Django 데이터 마이그레이션 (0) | 2015.12.09 |
django 웹 어플리케이션 쉽게 백그라운드로 돌리기 (0) | 2015.07.22 |
IE9 이상으로 브라우저를 업그레이드하거나, 크롬, 파이어폭스 등 최신 브라우저를 이용해주세요.