Kurze Antwort
Während die get
und join
Methoden für eine group
die gleichen Ergebnisse zurückgeben soll, implementiert get
einige Caching und wird wahrscheinlich Je nachdem, welches Backend Sie verwenden, ist es effizienter. Sofern Sie nicht unbedingt join
für einen Randfall verwenden müssen, sollten Sie get
verwenden.
Lange Antwort
Hier ist die Quelle für die get
Methode der ResultSet
Klasse Sellerie, die die GroupResult
-Klasse erweitert.
def get(self, timeout=None, propagate=True, interval=0.5,
callback=None, no_ack=True, on_message=None):
"""See :meth:`join`
This is here for API compatibility with :class:`AsyncResult`,
in addition it uses :meth:`join_native` if available for the
current result backend.
"""
if self._cache is not None:
return self._cache
return (self.join_native if self.supports_native_join else self.join)(
timeout=timeout, propagate=propagate,
interval=interval, callback=callback, no_ack=no_ack,
on_message=on_message,
)
Das erste, was wir sehen ist, dass die docstring uns auf der join
Methode für die Dokumentation suchen erzählt. Das ist ein Indiz dafür, dass die Methoden sehr ähnlich sind.
Mit Blick auf den Körper der get
Methode können wir sehen, dass es zunächst nach einem zwischengespeicherten Wert überprüft und gibt zurück, wenn es festgelegt ist. Wenn kein zwischengespeicherter Wert gefunden wird, ruft get
entweder die Methode join
oder join_native
auf, abhängig davon, ob das Back-End native Joins unterstützt. Wenn Sie das Format dieser return
Aussage ein wenig verwirrend finden, das ist im Wesentlichen das Gleiche:
if self.supports_native_join:
return self.join_native(timeout=timeout,
propagate=propagate,
interval=interval,
callback=callback,
no_ack=no_ack,
on_message=on_message)
else:
return self.join(timeout=timeout,
propagate=propagate,
interval=interval,
callback=callback,
no_ack=no_ack,
on_message=on_message)
Die docstring für die join
Methode hat dies zu sagen.
Dies kann eine kostspielige Operation für Ergebnisspeicher-Backends sein, die auf Abfrage (z. B. Datenbank) zurückgreifen müssen. Sie sollten in Betracht ziehen, join_native
zu verwenden, wenn Ihr Backend dies unterstützt.
So Sie sollten anrufen join_native
statt join
wenn Ihr Backend unterstützt wird. Aber warum sollte man sich auf den einen oder den anderen zurückrufen, wenn get
diese Logik für Sie zusammenfasst? Verwenden Sie stattdessen get
.
Sie können entweder Get oder Join in einer Gruppe verwenden, dies ist nicht die richtige Antwort – bwawok