Le preferenze di lettura sono le seguenti:
- PRIMARIO :le query vengono inviate al primario del set di repliche.
- PRIMARY_PREFERRED :le query vengono inviate al primario se disponibile, altrimenti a un secondario.
- SECONDARIE :le query sono distribuite tra le secondarie. Viene generato un errore se non sono disponibili secondari.
- SECONDARY_PREFERRED :le query sono distribuite tra i secondari o il primario se non è disponibile un secondario.
- PIÙ VICINO :le query vengono distribuite tra tutti i membri.
Quindi non c'è no uno specifico per il più vicino secondario. Puoi ottenere questo risultato combinando NEAREST e tag_sets e taggare le secondarie.
Quindi, se i secondari sono stati taggati {'secondaries': 1}
puoi leggere dal secondario più vicino in questo modo:
from pymongo import ReplicaSetConnection
from pymongo import ReadPreference
db = ReplicaSetConnection('localhost:27017', replicaSet='rs1')['my_db']
db.read_preference = ReadPreference.NEAREST
db.tag_sets = [{'secondaries': 1}]
Aggiornamento:
Tieni presente che se si verifica un'elezione e la topologia del set di repliche cambia, dovresti modificare manualmente i tag_set per rappresentare i nuovi secondari.