Python Celery가 뭐야?

박주윤·2023년 1월 16일
0

Celery

목록 보기
2/2

회사에서 Celery에 대해 공부하라는 과제가 주어졌다.

오랜 스승이었던 구글님을 뒤로하고 찾은 CHAT GPT

챗 지피티는 이렇게 말했다.
파이썬 Celery가 뭐야?

Celery는 파이썬에서 사용하는 백그라운드 작업 큐 라이브러리입니다. Celery는 비동기적으로 백그라운드에서 작업을 수행할 수 있도록 해주며, 이를 통해 애플리케이션의 성능과 응답 속도를 향상시킬 수 있습니다. 예를 들어, 이메일 발송, 이미지 처리, 데이터 분석 등의 작업을 수행할 수 있습니다. 또한, 작업을 여러 머신에 분산하여 처리할 수 있어 스케일링에도 용이합니다.

문장을 하나하나 뜯어보자. 난 왜 전공자인걸까 하나도 못알아먹겠는데

  1. Celery는 파이썬에서 사용하는 백그라운드 작업 큐 라이브러리 입니다.

백그라운드 작업 큐(Background Task Queue)

백그라운드 작업은 말 그대로 어떤 프로그램에서 뒤에서 동작하는 부분 웹으로 따지면 백엔드, Celery의 예시로 들면 메일전송, 이미지 등의 데이터 처리 등이다. 음.. 게임에서 우리는 클릭만 하면 되지만 그에 대한 상호작용들을 계산하는 부분이라고 이해하면 될 것 같다.
작업 큐는 알겠다. 예를들어 엣지실행 -> 크롬실행 -> 팀즈실행 순으로 작업하면 CPU의 태스크 큐에는 엣지 실행 -> 크롬 실행 -> 팀즈 실행 으로 넘어가고, 나오는 순서 역시 큐니까 엣지, 크롬, 팀즈 순으로 나와서 실행 될 것이다.

  1. Celery는 비동기적으로 백그라운드에서 작업을 수행할 수 있도록 해주며,

비동기적으로 백그라운드에서 작업을 수행한다. 음... 처음엔 비동기적이라는 말이 이해가 안됐는데 그냥 동시에 작업을 시켜준다고 보면 아주 틀린 말은 아닌 것 같다.
내가 그동안 해왔던 프로그래밍은 동시성이 없다. 코드 한줄 끝나고 그다음 코드가 실행되도록 절차적으로 진행이 됐기 때문이다. 예를들어 최상단에 time.sleep(1)이 있는 서로 다른 3개의 함수를 호출하면 time.sleep(1)이 3번 따로따로 적용해서 최소 3초가 걸리지만?
저걸 비동기로 처리한다면 3개의 함수가 동시에 진행되서 time.sleep(1)을 같이 진행한다는 것이다. 물론 완전히 동시는 아닐 것이다. 작업큐에 넣기는 넣을 테니까 음 내가 생각한 도식은 이렇다.

이게 내가 그동안 해왔던 프로그래밍이고

이게 비동기로 처리하는 프로그램이다.

라고 이해했다 일단은.

  1. ... 이를 통해 애플리케이션의 성능과 응답 속도를 향상시킬 수 있습니다.

음 당연히 어플리케이션의 성능과 응답속도가 향상됐다. 저걸 동시에 처리하니까 이젠 동시라는 말도 안써야겠다.

  1. 예를 들어, 이메일 발송, 이미지 처리, 데이터 분석 등의 작업을 수행할 수 있습니다.

이메일 발송, 이미지 처리, 데이터 분석 등의 작업은 내가 아는 선에서는 처리량이 일정하지 않다. 뭐 기대값은 어느정도 계산할 수 있겠지만, 예를들어 데이터 분석은 같은 함수더라도 데이터의 건수에 따라 시간이 천차 만별이다. 이미지 또한 크기와 용량에 따라 당연히 다른다.
만약 내가 하려는 데이터 처리가

  1. A->B, 100초
  2. A->C, 100초
  3. B+C->D 100초 라면?

이걸 절차적으로 한다면?
1에 100초 2에 100초 3에 100초 총 300초가 필요하다.

이걸 비동기로 처리한다면?
1과 2가 에 100초 소모함과 같이 2에 100초를 소모하고, B,C가 확보된 이후에 3번 작업을 진행할 테니 200초가 필요할 것이다.

이런걸 위해 하는게 비동기 처리다. 라고 이해했다 일단

  1. 또한, 작업을 여러 머신에 분산하여 처리할 수 있어 스케일링에도 용이합니다.

이게 제일 어렵다. 여기서 여러 머신에 분산이, 컴퓨터인지, CPU의 코어인지 쓰레드 단위를 말하는 건지에 대해 잘 모르겠다.

아무튼 Celery가 파이썬에서 비동기처리 지원 라이브러리 라는 것은 알겠다.

0개의 댓글