🤍 전 강의 25% 할인 중 🤍

2024년 상반기를 돌아보고 하반기에도 함께 성장해요!
인프런이 준비한 25% 할인 받으러 가기 >>

  • 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

안녕하세요!!!몇가지 질문 드리려고 합니다!!!ㅎㅎ

22.05.12 18:17 작성 조회수 172

0

현재 저는 Django restframework api 로 s3에 video파일을 업로드 하고 이를  처리하는 코드를 만들고 있습니다!!

여기서 저는 AWS Lambda(trigger), S3, Mediaconvert을 통해 업로드 되는 미디어 파일을 일괄 트랜스 코딩 작업을 해서

저장을 하려고 합니다!!

 

현재 동작방식은 (아직 제 장고서버에는 적용하지 않았지만 테스트 서버로써) s3 특정 버켓에 video파일이 올라가면 자동으로 lambda trigger를 동작시켜 제가 지정한 경로에 video파일이 transcoding이 되도록 작업을 해두었습니다!!

(차후 아래 사항이 해결이되면 장고로 video가 업로드가 되면 위를 접목시킬 예정입니다)

 

1. 제 생각에는 비동기 처리가 순서대로 두번 이루어 지는것 같은데 첫번째로는 파일을 업로드하기위한 post요청시 응답을 비동기 처리 (장고에서 처리) , 두번째는 트랜스코딩 처리 이는 aws단에서 이루어지기 때문에 관련이 없을것같습니다.

그래서 첫번째 post요청시(create video) 비동기 처리를 해야하는데 이와 관련된 참고할만한 class나 자료가 있을까요??

(제가 modelviewset을 활용하고 있는데 create async기능 때문에 상속 class를 바꾸어서 modelviewset의 편리함을 다 포기해야할까요 ㅠㅠ? or  아예 async createapi만 따로 만들어서 처리를 해야할까요!!??  )

즉!! redit을 보면 비디오 파일 업로드시 비동기처리가 되고 업로드가 완료되면 push알람이 오더라고요 ㅎㅎ 요론식으로 구현을 원해서 이와 관련된 서드파티라이브러리나 좋은 자료가 있을까요!!??

 

2. 장고로 파일을 s3에 업로드 하면 저장이 되는데 그중 혹시라도 파일명이 겹칠 수 가 있자나요?? 이부분을 처리를 해야할것같은데

제가 생각한 방법은 전에 선생님께서 전에 알려주신 serializer에 to_representation 메소드를 이용해서 파일명을 임의로 변경해서 reponse하도록 하는것을 생각해 보앗는데 이게 문제는 없는 방법일까요!!?? 아니면 보통 이러한 경우는 어떻게 처리를 하나요!!?? ㅎㅎ

 

3. 마지막으로 장고랑은 좀 무관한 내용이지만 위와 관련해서 video 트랜스 코딩 과정사항을 알기 위해서 polling과정이 있어야 할텐데

클라이언트에서 polling 이루어지는 과정이 어떻게 되나요 ?? 제가 소속된 팀은 코틀린을 사용하고 있고요 꼭 코틀린이 아니더라도

어떻게 이루어지는 궁금합니다! 

 

그냥 제 개인적인 예상은 몇초단위로? 계속 api요청을 보내서 status값이 completed면 이후 처리 .. 막 이런식으로 예상을 해보았는데 실제 서비스를 돌릴 때도 이러한 과정으로 비동기 처리에 대한 polling 이루어지나요!??

(위 과정이 맞다면 boto3를 활용해서 mediaconvert reponse status api를 따로 만들어주려고 합니다!)

 

질문이 다소 많았는데 파고들수록 어렵고 복잡해 지네요 ㅠㅠ  제가 경험이 부족하다보니 프로세스에 대하여 잘못 이해하고 있거나

이해가 안되시는 부분은 말씀해주시면 바로 자세하게 설명드리겠습니다!! ㅎㅎ

 

그리고 제 예상으론ㅎㅎ  사무실이 곧 or 이미 오픈하신것으로 아는데 너무너무 축하드리고요!!  

선생님의 명품 장고 세미나 정말너무너무너무 기대하고 있습니다!! 

항상 진심으로 감사드립니다!! ㅎㅎ

 

 

 

 

답변 1

답변을 작성해보세요.

0

안녕하세요.

1. 말씀하시는 비동기가 어떤 처리를 말씀하시는 것인지 잘 이해가 되지 않습니다. 전체적으로 어떤 프로세스로 처리하고 싶으신 지 좀 더 자세하게 설명을 해주시면 좋겠습니다. 간단하게라도 그림을 그려주셔도 좋구요.

파이썬 구현에서의 async def 정의가 말씀하신 <비동기 처리>는 아닐 듯 합니다.

비동기가 러프한 용어라서 다양한 구현 방법이 있을 수 있습니다.

2. 장고의 file storage api를 사용해서 S3에 저장하셨다면, FileSystemStorage 구현체의 _save 내에서 파일명 중복이 되지 않도록 알아서 처리해줍니다. 파일경로가 겹칠 경우, 파일명 뒤에 7개의 랜덤 문자열을 붙이는 방식으로 처리됩니다. // 그러니 특별히 신경쓰실 필요는 없습니다.

https://github.com/django/django/blob/4.0.4/django/core/files/storage.py#L71

3. 일반적으로 다른 서비스의 상태를 체크하기 위해서 폴링을 할 수도 있고, 그 서비스가 이벤트를 publish한다면 그 이벤트를 받아서 처리할 수도 있겠죠. 아래의 AWS 공식문서를 보니 MediaConvert에서 CloudWatch로 COMPLETE를 포함한 다양한 이벤트를 보낸다고 합니다.

https://docs.aws.amazon.com/mediaconvert/latest/ug/mediaconvert_cwe_events.html

화이팅입니다. :-)

 

채널톡 아이콘