정해진 시각이 되면 django model 객체의 필드값을 변경하는 기능을 만들고 싶다. 아래 stackflow 답변처럼 celery를 이용해 비동기적으로 정해진 시간에 맞추어 함수(task)를 실행하려고 한다.
Django: How to automatically change a field's value at the time mentioned in the same object?
장고(Django)에서 셀러리(Celery) 사용하기 1편
celery를 사용하려면 broker가 필요한데, RabbitMQ를 이용하기로 정했다. Redis에 비해 안정적이고, 긴 시간 동안 대기가 지속되어야 하기 때문이다.
Anaconda 가상환경에 Celery 패키지 설치 - kombu, amqp 패키지가 함께 설치됨
[cmd]
> pip install celery
RabbitMQ는 windows, ubuntu를 모두 지원하지만, 어차피 터미널 창에서 다룰 거 관리도 편하게 wsl로 만들어놓은 ubuntu 가상환경에 설치했다.
먼저 window에서 설치하려고 찾아보니 pip을 지원하지도 않고, 직접 installer를 깔고, .bat 파일을 여러 개 받길래 ubuntu를 선택했다.
[ubuntu]
$ sudo apt-get install rabbitmq-server
기본 서버 시작 명령어인 service rabbitmq-server start
를 ubuntu 터미널에 입력하면 권한이 없다고 뜬다. 앞에 sudo
를 붙여주어야 한다.
[ubuntu]