スクレイピングされた URL の cdn のエッジ サーバーをクリアする関数を呼び出すスクレイピー パイプラインの作成に取り組んでいます。訪問した URL のリストを簡単に保存する方法はわかりましたが、問題はクローラーがいつ終了したかを知ることです。
cdn の API は 100 個のバッチで URL を取得するため、100 個の URL ごとに clear 関数を簡単に呼び出すことができますが、クロールする URL が 543 個ある場合、最後の 43 個は cdn の clear 関数に送信されません。
スクレイピーシグナルのドキュメントを見てきましたが、
- Spider_closed シグナルは、最後のリクエストが受信されたとき、またはすべてのアイテムがパイプラインを通過したときに呼び出されます。後者の場合、最後の 43 個の URL で API を呼び出すことを知るには遅すぎます。
- もう 1 つのオプションは、spider_closed シグナルを受信したときに cdn の api を呼び出す拡張機能を追加することですが、スパイダーが見たすべての URL をどのように知るのでしょうか? アイテム パイプラインでそれらのリストを作成できますが、それを拡張機能に取得するにはどうすればよいですか? (ちょうど私が思いついた item_scraped シグナルを使用できるかもしれません。)
そうですね、パイプラインの中で、いつアイテムが来なくなったかを知る方法はありますか? 複数のパイプラインが同時に実行されていますか、それとも各パイプラインはシングルトンですか?