본문 바로가기
Django

커스텀 커맨드 만들기 - custom command

by zgabriel 2024. 11. 14.
728x90

Django에서는 앱마다 커스텀 커맨드를 만들 수 있다. (아직도 프로젝트, 앱이 헷갈리다 ㅡㅡ;)

 

간단하게 설명하면 test.py를 콘솔에서 아래와 같이 명령어로 실행시키기 위한 것이다. 


 . python manage.py test

위와 같이 명령어를 실행하면 test.py에 있는 소스가 실행된다. 

이제 만드는 방법에 대해서 알아보자

1. 커스텀 커맨드를 만들 앱을 결정해서 해당 폴더에 아래 구조로 폴더 2개를 생성한다

    (앱의 하위폴더에 생성하는게 중요하다)

 -> /management/commands

2. commands 폴더 밑에 test.py 소스를 작성한다.  (간단하게 메세지를 출력하는 소스이다)

from django.core.management.base import BaseCommand

class Command(BaseCommand):

    def handle(self, *args, **kwargs):
        def callback(ch, method, properties, body):
            print("Received message:", body)

        print("Waiting for messages. To exit press CTRL+C")

3. settings.py 에 있는 INSTALLED_APPS 에 해당 앱이 등록되어 있는지 확인해서 없으면 등록한다. 

4. 콘솔에서 python manage.py 실행해서 내가 등록한 test 가 나오는지 확인한다. 나오면 정상적으로 등록된건다 

5. 실행은 python manage.py test 를 입력하면 test.py가 실행된다. 

나의 경우는 백그라운드로 실행해 rabbitmq 로 메세지를 계속 수신하고 싶기 때문에 

아래와 같이 nohup 을 사용해 백그라운로 실행한다.

 . nohup python manage.py test & 
 . nohup python manage.py test > test.log &  #로그를 쌓고 싶을 경우 설정

 

반응형