2016-05-04 15 views
3

Ich implementiere einen Cache-Server, der eine Sellerie-Aufgabe verwendet, um den Cache im Hintergrund zu aktualisieren. Es gibt nur eine Aufgabe, die ich mit verschiedenen Argumenten (Cache Keys) nenne.Wie verhindert man, dass Sellerie die gleiche Aufgabe ausführt?

Da nach dem Verbinden dieses Servers mit meinem Hauptproduktionsserver wird es Dutzende Anfragen pro Sekunde für den gleichen Cache-Schlüssel Ich möchte sicherstellen, dass es nie mehr als eine der Update-Aufgaben mit dem gleichen Cache-Schlüssel in Sellerie-Warteschlange (arbeitet als eine Warteschlange und ein Set zur gleichen Zeit).

Ich dachte daran, einen Redis-Satz zu verwenden, um das sicherzustellen, bevor ich die Aufgabe ausführe, aber ich suche nach einem besseren Weg.

+1

Ist Ihre Anforderung wirklich "nur eine Aufgabe mit dem gleichen Cache-Schlüssel in Sellerie QUEUE" oder ist es "nur eine Aufgabe mit dem gleichen Cache-Schlüssel ausgeführt wird (Aktualisierung Cache) gleichzeitig"? –

+0

@MuhammadTahir nur eine Aufgabe mit dem gleichen Cache-Schlüssel in Sellerie QUEUE – Sina

+1

Sehen Sie, ob dies für Sie funktioniert http://docs.selleryproject.org/en/latest/tutorials/task-cookbook.html#ensuring-a-task-is - nur einzeln ausgeführt. Dies wird funktionieren, wie es für den zweiten Fall ist, den ich erwähnt habe, aber es kann für Ihre Version (die erste, die ich erwähnte) auch geändert werden. –

Antwort

1

Es gibt nur eine Möglichkeit, Ihren eigenen Sperrmechanismus zu implementieren. Das offizielle Dokument hat eine nice example page.. Die einzige Grenze ist Ihre Vorstellungskraft.

Hoffe, das hilft.

Verwandte Themen