인프런 커뮤니티 질문&답변

김홍근님의 프로필 이미지
김홍근

작성한 질문수

실리콘밸리 엔지니어와 함께하는 샐러리(Celery)

Task Callback과 에러 다루기

celery 에서 task 작업 끝난 후 ack 받기

작성

·

209

1

안녕하세요. celery 수업 잘 듣고 있습니다.

제가 수업 내용을 활용 하여 test 코드를 작성 중입니다.

구조는 publisher(kombu), broker(redis), consumer(celery) 구성하고 있습니다.

질문은 celery 에 task가 작업이 끝난 후 결과를 broker 알리면 publisher 가 ack 를 받아 처리하는 구조가 가능 할까요?

답변 2

0

김홍근님의 프로필 이미지
김홍근
질문자

Publisher -> Broker -> Celery -> Broker -> Publisher

구조가 가능 한지에 대한 질문이 였습니다.

publisher 가 celery 에게 일을 시키면 일이 끝날 때까지 publisher 가 대기 하고 있다가 celery가 일이 끝나면 그 결과를 publisher가 받는 구조를 말씀 드렸습니다.

미쿡엔지니어님의 프로필 이미지
미쿡엔지니어
지식공유자

안녕하세요 김홍근님,

퍼블리셔는 말그대로 이벤트를 만드는 역할입니다. 퍼블리셔가 다시 이벤트를 받는다는 말은 데이터베이스에서 결과 레코드를 확인한다는 식은 생각으로 읽혀지는데 그러려면 퍼블리셔가 주기적으로 상태를 확인해야할 듯합니다 ㅎㅎ

김홍근님의 프로필 이미지
김홍근
질문자

그렇다면 해당 작업에 대한 정보를 브로커(redis)에 볼수 있는 방법이 있나요??

 

미쿡엔지니어님의 프로필 이미지
미쿡엔지니어
지식공유자

플라워에서 작업내용을 브로커에서 뽑아오니 잘 살펴보시면 가능도 할 듯합니다

0

미쿡엔지니어님의 프로필 이미지
미쿡엔지니어
지식공유자

안녕하세요 김홍근님,

좀 이해가 안되는데요, 보통 Celery가 Consumer인데 그 결과는 데이터베이스나 Redis에 저장됩니다. Publisher는 이러한 Celery에게 일을 시키는 역할이라 약간 반대가 되었는데요?

순차적인 Flow가 Publisher -> Broker -> Celery -> DB/Broker가 될거 같습니다만.. 제가 질문을 잘못 이해했다면 말씀해 주세요.

Publisher -> Broker -> Celery -> Broker -> Celery도 가능은 합니다만...

감사합니다.

김홍근님의 프로필 이미지
김홍근

작성한 질문수

질문하기