1

Viele beliebte Aufgabenwarteschlangen (wie Google GAE TaskQueue, Sellerie) verfügen über die ETA/Countdown-Funktion, mit der eine Aufgabe nach xxx Sekunden in die Warteschlange gestellt werden kann.Implementieren einer TaskQueue (wie Sellerie) mit ETA/Countdown

Ich arbeite an einem Projekt, das eine Aufgabenwarteschlange mit der ETA-Funktion benötigt. Es gibt jedoch einige Einschränkungen, dass ich das Google Pubsub-Messagingsystem verwenden muss. Pubsub verfügt nicht über die ETA-Funktion. Ich frage mich, wie man einen zuverlässigen und skalierbaren ETA-Mechanismus für eine Aufgabenwarteschlange implementiert. Sowohl allgemeine Architekturideen als auch aktuelle Codebeispiele sind willkommen.

Unser System reiht 600-2000 Aufgaben/Sekunde in die Warteschlange ein und etwa 10% von ihnen müssen ETA haben. Es ist ein verteiltes System und leistungskritisch.

Ich habe versucht, die Quelle code von Sellerie zu verfolgen, konnte aber nicht die tatsächliche Logik der Handhabung der ETA finden. Es wäre auch gut, wenn jemand mich auf die Datei/den Code von Sellerie hinweisen könnte, die ETA behandelt.

Antwort

0

Ich denke, ich könnte gefunden haben, wie Sellerie es getan hat. In eventlet.py wird die spawn_after-Funktion von eventlets verwendet, um die ETA-Sekunden der Arbeitserstellung zu verzögern.

secs = max(eta - monotonic(), 0) g = self._spawn_after(secs, entry)