← レシピへ戻る

URL をキューに入れて処理する

URL をワークスペースキューへ追加し、各項目を取り出して、完了した作業を commit します。

キューとワーカー 中級 JavaScript queue_and_process.js

前提条件

  • 開いている Guida ワークスペース

期待される結果

Guida が 3 件の URL レコードをキューに入れ、1 件ずつ処理してキューから削除します。

ソース例

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);