바뀜

443 바이트 추가됨 ,  2023년 1월 11일 (수) 12:56
편집 요약 없음
40번째 줄: 40번째 줄:  
|사전설정
 
|사전설정
 
|장고에서 celery_tutorial이라는 프로젝트가 만들어져 있다 가정하고 진행한다.
 
|장고에서 celery_tutorial이라는 프로젝트가 만들어져 있다 가정하고 진행한다.
|
+
|pip install celery
 
|-
 
|-
 
|라이브러리 인스턴스 만들기
 
|라이브러리 인스턴스 만들기
 
|settings.py가 있는 디렉토리에 celery.py를 생성 우측과 같이 입력한다.
 
|settings.py가 있는 디렉토리에 celery.py를 생성 우측과 같이 입력한다.
 +
      87번째 줄: 88번째 줄:  
|-
 
|-
 
|확장라이브러리
 
|확장라이브러리
|라이브러리를 설치한다.[선택사항일까. 구현해보고 진행해보자.]
+
|라이브러리를 설치한다.
 +
이거 설치 안하면 ModuleNotFoundError: No module named 'django-db' 에러가 뜬다.
 
|pip install django-celery-results
 
|pip install django-celery-results
 
|-
 
|-
 
|settings.py 설정
 
|settings.py 설정
|메시지브로커 주소 등 설정값을 넣어준다.
+
|메시지브로커 주소 등 설정값을 넣어준다. celery.py에서 설정한 namespace가 설정에서 활용된다.(맨 앞에 CELERY_로 시작하는 내용들이 샐러리 설정이 된다.)
 +
 
 +
 
 
브로커로 RabbitMQ를 사용한다면 다음과 같이.<syntaxhighlight lang="python">
 
브로커로 RabbitMQ를 사용한다면 다음과 같이.<syntaxhighlight lang="python">
 
CELERY_BROKER_URL = 'amqp://myuser:mypassword@localhost:5672/myvhost'  # 브로커 주소값.
 
CELERY_BROKER_URL = 'amqp://myuser:mypassword@localhost:5672/myvhost'  # 브로커 주소값.
145번째 줄: 149번째 줄:  
|준비 확인
 
|준비 확인
 
샐러리 실행
 
샐러리 실행
|[데몬으로 시작하는 법은 따로 있나보다.]
+
|다른 터미널 창을 열어 따로 실행해주어야 한다.(redis 등 메시지브로커가 실행된 상태여야 한다.)
다른 터미널 창을 열어 따로 실행해주어야 한다.
+
뭔가 성공적인 메시지가 뜨면 준비 완료.
    
task.py의 내용이 바뀌면 재실행 해주어야 한다.(장고의 내용이 바뀌면 재실행하듯.)
 
task.py의 내용이 바뀌면 재실행 해주어야 한다.(장고의 내용이 바뀌면 재실행하듯.)
|celery -A settings.py가있는폴더.celery worker --loglevel=info
+
|celery -A 프로젝트명.celery worker --loglevel=info
 
|}
 
|}
 +
이후 운용에선 굳이 셀러리를 시작시켜주는 게 아니라 장고에서 자연스레 돌리는 듯하다.[확인필요]
   −
== 뷰에서의 작업 ==
+
== DB조작 작업 ==
 
{| class="wikitable"
 
{| class="wikitable"
 
!과정
 
!과정
182번째 줄: 187번째 줄:  
|뷰
 
|뷰
 
|delay()는 celery의 업무를 수행하는 apply_async()의 간소판.
 
|delay()는 celery의 업무를 수행하는 apply_async()의 간소판.
 +
delay() 따위가 없으면 그냥 함수와 같이 실행.
 
카운트다운이나 재실행 등의 자세한 옵션은 apply_async()에 더 자세한 변수를 넣음으로써 가능해진다.(좀 과하게 긴 작업을 제한한다든가.)
 
카운트다운이나 재실행 등의 자세한 옵션은 apply_async()에 더 자세한 변수를 넣음으로써 가능해진다.(좀 과하게 긴 작업을 제한한다든가.)
 
|<syntaxhighlight lang="python">
 
|<syntaxhighlight lang="python">