Sellerie - Beat auf Heroku vs Arbeiter und Uhr Prozesse

8

Ich habe eine periodische Aufgabe, die ich in heroku procfile mit worker:

implementiere

Procile

%Vor%

tasks.py

%Vor%

Für diese periodische Aufgabe benötige ich den --beat (Ich habe es überprüft, indem ich es ausgeschaltet habe und die Aufgabe nicht wiederhole). In gewisser Weise macht das --beat die Arbeit einer Uhr ( Ссылка ) )

Meine Sorge ist: Wenn ich den Worker heroku ps:scale worker=2 auf 2x Dynos skaliere, sehe ich, dass zwei Beats auf worker.1 und worker.2 aus den Logs laufen:

%Vor%

Das angezeigte Protokoll ist für eine andere periodische Aufgabe, aber der Schlüsselpunkt ist, dass beide Arbeiter-Dynoden Signale erhalten, um die gleiche Aufgabe von ihren jeweiligen Uhren zu erledigen, während tatsächlich eine Uhr tickt und nach jeder XX Sekunden entscheidet, was zu tun ist, und gibt diese Aufgabe dem am wenigsten belasteten worker.n dyno

Mehr darüber, warum eine einzelne Uhr essentiell ist, finden Sie hier: Ссылка

Ist das ein Problem und wie kann man dies vermeiden, wenn ja?

    
dowjones123 25.08.2014, 16:43
quelle

1 Antwort

15

Sie sollten einen separaten Arbeiter für den Beat-Prozess haben.

%Vor%

Jetzt können Sie die Worker-Aufgabe skalieren, ohne den Beat zu beeinflussen.

Wenn Sie den zusätzlichen Prozess nicht immer benötigen, können Sie alternativ weiterhin "B" in der Worker-Aufgabe verwenden, aber auch eine zweite Aufgabe, z. B. "extra_worker", die normalerweise auf "0" gesetzt ist Wenn nötig, skalieren. Wichtig ist, die Aufgabe immer mit dem Takt bei 1 Prozess zu halten

    
Daniel Roseman 25.08.2014, 17:10
quelle