Closed james-sungjae-lee closed 5 years ago
List 등을 사용하는 등의 다양한 방법으로 접근하였지만, 하나의 프로세스 내에서 제어되는 inotify 의 특성상 해결 불가능 하였다
다양한 시도 끝에 Python 의 Multithreading 을 이용하여 동 시간대에 서로 다른 Process 를 작동하게 함으로써 구현이 가능했다
관련 inotify 테스트 코드는 하단 링크에 작성되어 있다
멀티스레딩을 이용한 구현에 관해 그림으로 정리하면 아래와 같다.
현재 구현된 Inotify 기반의 Event Trigger 는 Rekognition 에서 인식될 때 까지의 Latency 이후에 다음 순차 Event 를 처리하기 때문에 시간이 맞지 않는 문제가 발생한다.
이를 해결하기 위해서 Rekognition 에서 인식된 시점과 가장 가까운 시간에 생성된 Cropped Face Image 를 분석하도록 개발할 필요가 있다.
기본적인 아이디어로, Filename 과 Time 의 두 가지 리스트 자료구조를 생성한 다음
각각의 리스트에 Filename 과 해당 시점의 Time 값을 append 를 이용하여 데이터를 삽입한다.
Rekognition 에서 인식된 user id 가 반환되는 순간, 해당 시점의 Time 값을 가져와, Time List 에 존재하는 가장 가까운 Time 값을 찾아낸다. (혹은 가장 마지막에 append 된 filename 을 가져오는 것으로 대체 가능할 것 같다.)
그 다음 번 s3 업로드 및 Rekognition 분석은 해당 Filename 을 기준으로 진행된다