Electron 을 쓰다보니 메인프로세스는 Node.js로 사용하게 됨.
웹 서비스와 다르게 모든걸 스텐드얼론 형태를 중심으로 생각해야 하는 환경이라 제약이 좀 있음.
1만개 정도의 DB를 만들고 거기서 자주자주 검색을 해야 하는데, Sqlite3 쓰면 딸깍임.
근데 SQlite3는 동기라서 Blocking이 발생하기에 Main Process에서 억세스해서 조지면,
작업을 모두 마칠때까지 UI가 프리징 됨. 좀만 길어지면 응답없음 뜸.
그래서 Worker를 이용해서 스레드를 분리해서 실행해야 함.
기존에 있던 워커풀 라이브러리도 있지만 워커관리 중심이라
나는 웹 서비스에서 평소대로 하던 것 처럼
JobQueue 처럼 Job을 던지면 알아서 각 Task의 Progress와 Done 결과 값만 받았으면 좋겠다 싶었음.
메모리 제한 안에서 워커수량은 알아서 늘리고, 작업 끝나면 다음 넘기고, 스레드 닫고.. 등등.
대기열에 작업을 막 수십개씩 던지면 알아서 동시에 2~3개씩만 처리하면서
각각의 Task에 대한 현재 프로그레스 띄우고 이런걸 원했음.
크롬에서 파일 20개씩 다운 받아보면 어떤건지 대략 알꺼임.
근데 코딩 할려니 뇌세포 다 죽어서 멍~한거임...
아무튼 O1 Pro가 잘 짜줌. ㄷㄷ
const jobId = queue.addJob({ payload }, (status, progress)=> { });
const result = await queue.waitTaskUntilDone(jobId);
대충 이렇게 가능해짐.
AI 없이 맨땅 헤딩하면서 했으면 하루이틀정도 꼬박 개 삽질했을 듯 .
ㄷㄷ 이정도로 해준다고? 쩌네
필요하니깐. ㅎㅎ
이거 비동기 쓰는 애들은 고민하는 게 비슷비슷하구나, 난 python fast api 쓰는데, db blocking 작업 때문에 db 부분을 위에 형태로 감싸버렸음. 작업은 o1 + 커서 소넷 이용해서 했음
일렉트론 일감이 있긴 있나요
응용프로그램치곤 좀 무겁지않나싶던디
일감이 없으면 일감을 만들면 되지욤.