2017-12-23 3 views
1

Ich habe einen Schaber gemacht, um rund 150 Links zu scannen. Jeder Link hat ca. 5k Sublinks, von denen Informationen abgerufen werden können.Sellerie Arbeiter Nebenläufigkeit

Ich benutze Sellerie, um den Schaber im Hintergrund zu betreiben und Daten auf einem Django ORM zu speichern. Ich benutze BeautifulSoup für Schrott URL.

Wenn ich die Sellerie Ausführung dieses Befehl mit

celery worker -A ... --concurrency=50

alles funktioniert gut, aber die Arbeiter 1-50 Schlaf

Wie ich die Sellerie Arbeits bis zum Schaber seiner Aufgabe beenden machen?

+0

zeigen uns, wie Ihre Aufgabe und feuerte definiert – georgexsh

Antwort

1

Zunächst wird dieser Befehl nicht 50 Arbeiter starten, sondern 1 Arbeiter mit 50 Prozessen. Ich würde auch empfehlen, so viele Prozesse wie möglich zu verwenden. (Lassen Sie uns 8 für den Rest meiner Antwort sagen.)

Meine Vermutung hier ist, dass die anderen Prozesse im Leerlauf sind, weil Sie nur eine Aufgabe ausführen. Wenn Sie gleichzeitig arbeiten möchten, müssen Sie Ihre Arbeit in Teile aufteilen, die gleichzeitig ausgeführt werden können. Der einfachste Weg, dies zu tun, ist nur eine separate Aufgabe für jeden Link, den Sie kratzen möchten. Der Arbeiter beginnt dann arbeiten 8 Links auf Schaben und wenn es 1 beendet wird es auf dem nächsten beginnen, bis er abgeschlossen hat alle sollten 150.

so Ihre Berufung Code Ihrer Aufgabe Schaben etwa wie:

for link in links: 
    scrape_link.delay(link) 

mit scrape_link Ihrer Aufgabe Funktion, die so etwas wie aussehen:

@app.task 
def scrape_link(link): 
    #scrape the link and its sub-links 
+0

Dies bedeutet, wenn u jede Verbindung als Aufgabe machen versuchen, die Arbeiter Gleichzeitigkeit Zahl zu machen, wird das eine gute Leistung –

+0

Ja, solange Ihre Nebenläufigkeitsnummer mindestens so hoch ist wie die Anzahl der Kerne, die Sie haben, wird es ziemlich optimal sein. –

+0

Ok, lassen Sie mich versuchen, Sie wissen zu lassen, dass, wenn Arbeiter mit 20 Nebenläufigkeit beginnen, diese 20 bei jedem Start der Aufgabe sein werden? –

Verwandte Themen