Settings
Objekt ist unveränderlich von selbst, sondern hat Anzahl von Set-Methoden, für ex settings.set
https://github.com/scrapy/scrapy/blob/129421c7e31b89b9b0f9c5f7d8ae59e47df36091/scrapy/settings/init.py#L234
Neuere Versionen von Scrapy Spinnen (1,0 Anfang) hat Klassenmethode update_settings
@classmethod
def update_settings(cls, settings):
settings.setdict(cls.custom_settings or {}, priority='spider')
die in custom_settings
Eigenschaft der Spinne präsentiert Einstellungen mit Einsen überschrieben werden soll. So erreichen Sie Ihr Ziel können Sie diese Methode in irgendeiner Weise außer Kraft setzen, wie die
class TheSpider(scrapy.Spider):
name = 'thespider'
is_debug = True
custom_debug_settings = {
# Put your debug settings here
}
@classmethod
def update_settings(cls, settings):
settings.setdict(getattr(cls, 'custom_debug_settings' \
if getattr(cls, 'is_debug', False) \
else 'custom_settings', None) or {},
priority='spider')
Und natürlich gibt es projektweiten ‚zwei Kugeln Django‘ Art und Weise benutzerdefinierte Einstellungsdatei für Debug-Zwecke zu haben, so dass es sein könnte, so ähnlich:
settings.py (fügen Sie am Ende der Datei):
try:
from dev_settings import *
except ImportError:
pass
dann können Sie dev_settings.py neben settings.py erstellen und Fügen Sie dort Einstellungen hinzu, die Sie für Ihre Entwicklungszwecke anpassen möchten - sie werden überschrieben, wenn dev_settings.py existiert oder der Import ignoriert wird, wenn nicht.
Dies scheint teilweise zu funktionieren. Meine 'custom_debug_settings' sind korrekt ausgefüllt, werden jedoch nicht angewendet. Ich habe versucht, die Log-Ebene auf "DEBUG" zu setzen, und wenn ich 'self.settings.attributes ['LOG_LEVEL']' in einer 'parse()' -Funktion aufruft, gibt es den korrekten Wert, aber es zeigt keine Debug-Meldungen an. Irgendwelche Ideen? – user1068464
Natürlich. Wenn Sie sich den Scrapy-Quellcode ansehen, werden Sie sehen, dass er vor der Verarbeitung von spider custom_settings Logger erstellt, so dass es keine Möglichkeit gibt, den Standard-Logger durch Ändern von Einstellungen zu beeinflussen. Sie sollten entweder den Import-Einstellungen Ansatz von oben verwenden oder benutzerdefinierte Protokollhandler hinzufügen/benutzerdefinierte Logger erstellen. – mizhgun
Vielen Dank für die Hilfe. Ich habe deine Antwort jetzt auch akzeptiert, da mein Problem eine andere Sache ist. Der Importeinstellungen-Ansatz ist für meine Bedürfnisse nicht durchführbar. Die Handhabung benutzerdefinierter Protokolle gestaltet sich ebenfalls nicht so einfach, da die erstellten Protokolle nicht wirklich vom Spider, sondern vom Crawler stammen. Also werde ich versuchen, herauszufinden, ob es eine Möglichkeit gibt, einen neuen Logger im Crawler zu erstellen (mit den tatsächlichen Einstellungen des Spiders). – user1068464