← 레시피로 돌아가기

URL을 큐에 넣고 처리하기

URL을 워크스페이스 큐에 추가하고 각 항목을 꺼내 완료한 작업을 commit합니다.

큐와 워커 중급 JavaScript queue_and_process.js

전제 조건

  • 열려 있는 Guida 워크스페이스

예상 결과

Guida가 URL 레코드 3개를 큐에 넣고, 하나씩 처리한 뒤 큐에서 제거합니다.

소스 예제

queue_and_process.js

명시적인 checkout과 commit을 갖춘 지속적인 작업 목록이 필요할 때 큐를 사용합니다.

// 큐와 처리 - 배치 작업에 큐 사용
//
// 큐를 사용하면 항목을 순서대로 나열하고, 재시도나 데드 레터 처리를
// 포함한 방식으로 처리할 수 있습니다. 페이지 목록 크롤링이나
// 데이터 순차 처리에 적합합니다.
// 열린 워크스페이스가 필요합니다.
const queueName = "pages_to_visit";
// 여러 항목을 큐에 넣기
const urls = [
"https://example.com/page1",
"https://example.com/page2",
"https://example.com/page3"
];
for (const url of urls) {
g.queue.enqueue(queueName, {
url: url,
addedAt: new Date().toISOString()
});
}
g.log("큐에 추가했습니다: " + urls.length + "");
// 큐 개수 확인
const count = g.queue.count(queueName);
g.log("큐 안의 항목 수: " + count);
// 항목을 꺼내 처리
let processed = 0;
while (true) {
const item = g.queue.dequeue(queueName);
if (!item) break;
g.log("처리 중: " + item.data.url);
// 여기서 실제 작업 수행(이동, 추출 등)
// ...
// 완료되면 commit. 나중에 재시도하려면 abort.
g.queue.commit(item.id);
processed++;
}
g.log("처리한 항목 수: " + processed);