私はさまざまなソースからいくつかのデータを抽出するためにスクレイピーを使用しています。これは非常にうまく機能しますが、大きな XML ファイル (約 100MB => 40000 アイテム) からデータを抽出するスパイダーを作成しました。
私はスクレイピー XMLFeedSpiderを使用しています。
問題は、scrapy が大量のメモリ (1GB 以上) を使用していることであり、アイテムで使用されているメモリを解放しない理由がわかりません。
(telnet でスパイダーに接続するために) Scrapy の trackrefs ツールを使用すると、次の出力が得られます。
>>> prefs()
Libxml2Document 2 oldest: 160s ago
CustomName 1 oldest: 163s ago
XmlResponse 1 oldest: 161s ago
XmlXPathSelector 1 oldest: 0s ago
Request 1 oldest: 163s ago
CustomName 38893 oldest: 150s ago
すべてのアイテム パイプラインを無効にしました。
私のスパイダーでは、アイテムの参照を保持していません。アイテムを作成して返すだけです。メモリリークがどこにあるのかわかりません...
私のアイテムがリリースされない理由はありますか?