Risposta breve
Mentre i get
e join
metodi per un group
dovrebbero restituire gli stessi risultati, get
implementa alcune caching e probabilmente essere più efficiente a seconda del backend che stai utilizzando. A meno che tu non abbia davvero bisogno di usare join
per un caso limite, devi usare get
.
Risposta lunga
Ecco l'origine per il metodo della classe di sedano ResultSet
get
cui la classe GroupResult
estende.
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,
)
La prima cosa che vediamo è che il docstring ci dice di guardare il metodo join
per la documentazione. A prima vista, questa è un'indicazione che i metodi sono molto simili.
Osservando il corpo del metodo get
, possiamo vedere che prima controlla un valore memorizzato nella cache e lo restituisce se è impostato. Se non viene trovato alcun valore memorizzato nella cache, get
chiamerà il metodo o il metodo join_native
a seconda che il backend supporti i join nativi. Se trovate il formato che return
dichiarazione un po 'di confusione, questo è essenzialmente la stessa cosa:
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)
Il docstring per il metodo join
ha questo da dire.
Questa operazione può risultare costosa per i backend di archivio dei risultati che devono corrispondere a ricorso al polling (ad es. Database). Dovresti considerare l'utilizzo di join_native
se il tuo back-end lo supporta.
Così si dovrebbe essere chiamata join_native
invece di join
se il back-end lo supporta. Ma perché preoccuparsi di chiamare condizionatamente l'uno o l'altro se get
avvolge questa logica per te? Basta usare get
invece.
È possibile utilizzare get o join in un gruppo, questa non è la risposta corretta – bwawok