강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của bluebamus
bluebamus

câu hỏi đã được viết

Celery cùng kỹ sư Thung lũng Silicon

Giải quyết lỗi Task bằng Signal

django에서 view나 api에서 request를 celery로 넘길 수 있을까요?

Viết

·

239

·

Đã chỉnh sửa

1

django에서 view나 api로 받은 request 정보를 celery에 넘겨 client에게 응답 처리를 하게 만들 수 있을까요?

시리얼라이저 문제로 celery에서 request를 arg로 받을 수 없는 것으로 알고 있습니다.

그래도 tcp를 이용한 전송이기 때문에 가능은 할것 같은데

어떻게 접근해야 될지 가늠이 되지 않아

혹시 비슷한 고민을 해보신 적이 있으실까 싶어 이렇게 질문을 드려봅니다.

djangocelerydjango-celerydjango-celery-beat

Câu trả lời 1

0

altoformula님의 프로필 이미지
altoformula
Người chia sẻ kiến thức

안녕하세요 bluebamus님,

저희도 비슷한 방법으로 사용은 하고 있는데, Django의 요청 객체인 request를 Celery로 직접 넘길 수 없지만, 요청에서 필요한 데이터를 추출하여 Celery 작업에 전달하는 방식으로 문제를 해결하고 있습니다.

기본적인 방식은 다음과 같은데요?

  • 요청 데이터 추출: 요청 객체에서 필요한 데이터를 추출하여 Celery 작업에 전달합니다.

  • Celery 작업 정의: 추출한 데이터를 처리하는 Celery 작업을 정의합니다.

  • Django 뷰/API에서 Celery 작업 호출: 요청 데이터를 Celery 작업에 전달하고 비동기 작업을 시작합니다.

  • 클라이언트 응답 처리: Celery 작업이 완료된 후 결과를 클라이언트에게 응답으로 반환합니다

Django내에서는 delay 같은 것을 사용하셔서 Celery 작업을 시작하시고, task-result/<task_id> endpoint를 만드셔서 GET 요청을 보내 작업 결과를 조회하시면 될 듯 합니다.

도움이 되셨을까요?

bluebamus님의 프로필 이미지
bluebamus
Người đặt câu hỏi

polling이 방식이 아니라

client에서 sse 요청을 하면 view/api에서 응답을 하지 않고 celery에게 ip와 헤더, 세션, key 등의 정보를 넘겨 celery에서 sse 응답을 개시할 수 있을까 고민을 하고 있었습니다.

celery에서 이러한 http 응답을 직접 만드신 작업이 있으신지, 있으시다면 어떻게 하셨는지 알고 싶었습니다. ^^

Hình ảnh hồ sơ của bluebamus
bluebamus

câu hỏi đã được viết

Đặt câu hỏi