
Ich plane Spider, die über Scrapy mit Cron bereitgestellt werden. Jeder Spider eine Zeile. Bei 100 Spidern wird dies ziemlich schwierig zu planen und zu verwalten. Was ist die empfohlene Methode, um eine große Anzahl von Jobs zu verwalten? Unter Berücksichtigung der potenziellen Wartungszeit, die zum Anhalten/Fortsetzen von Jobs erforderlich ist, sowie anderer Dinge wie überlappender Jobs usw.
Antwort1
Verwenden Sie keinen Cron
Wenn Ihre Anforderungen komplex sind, sollten Sie ein fortgeschritteneres Produkt in Betracht ziehen, das für die Ausführung komplexer Zeitpläne (verteilt auf mehrere Server) ausgelegt ist und Trigger, Jobabhängigkeiten, Fehlerbehandlung, Wiederholungsversuche und Wiederholungsüberwachung usw. unterstützt. Der Branchenjargon wäre „Enterprise“.Arbeit planenund/oder „Workload-Automatisierung“.
Antwort2
Wenn Sie planen müssen, WANN die Aufgabe ausgeführt wird, und nicht WIE OFT, können Sie weiterhin cron verwenden. Um die übergreifende Ausführung von Aufgaben zu vermeiden, können Sie cron einfach ein kurzes Skript ausführen lassen, das die Aufgabe zu einer Art Warteschlange hinzufügt (Redis, RabbitMQ, SQL-Datenbank), und ein anderes Skript diese Warteschlange nutzen lassen und die Arbeitslasten sequenziell oder mit begrenzter Parallelität ausführen lassen. Dies bringt natürlich eine andere Kategorie von Problemen mit sich, beispielsweise wie mit hängengebliebenen Arbeitslasten umzugehen ist, die die Ausführung der anderen blockieren :)