Ich benutze Scrapy, um einige Daten aus verschiedenen Quellen zu extrahieren, und es funktioniert wirklich gut aber jetzt habe ich eine Spinne geschrieben, um Daten aus einer großen XML-Datei (ca. 100 MB => 40000 Artikel).Scrapy Spider nicht Artikel Speicher freigeben
Ich benutze die scrapy XMLFeedSpider.
Das Problem ist, scrapy verwendet eine Menge Speicher (1 GB oder mehr) und ich weiß nicht, warum es nicht die von meinen Artikeln verwendeten Memomry freigibt.
Als ich das trackrefs Werkzeug von scrapy verwenden (meiner Spinne mit Telnet zu verbinden) bekomme ich folgende Ausgabe:
>>> 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
ich die Artikel Pipelines deaktiviert alle haben.
In meiner Spinne behalte ich keinen Bezug von Gegenständen, ich erschaffe nur Gegenstände und gebe sie zurück. Ich kann nicht finden, wo der Speicher leck ist ...
Gibt es eine Erklärung, warum meine Artikel nicht freigegeben werden?
Scrapy akkumuliert keine Objekte im Speicher, und wenn dies der Fall ist, wird es als Fehler betrachtet. Überprüfen Sie Ihre Spider-Middlewares, falls der von XMLFeedSpider zurückgegebene Generator in einer Liste verwendet wird. Es ist viel einfacher, wenn Sie Ihren Projektcode anzeigen können. – dangra