read_preferences – Utilities for choosing which member of a replica set to read from.

Utilities for choosing which member of a replica set to read from.

class pymongo.read_preferences.Primary

Primary read preference.

  • When directly connected to one mongod queries are allowed if the server is standalone or a replica set primary.
  • When connected to a mongos queries are sent to the primary of a shard.
  • When connected to a replica set queries are sent to the primary of the replica set.
document

Read preference as a document.

mode

The mode of this read preference instance.

name

The name of this read preference.

tag_sets

Set tag_sets to a list of dictionaries like [{‘dc’: ‘ny’}] to read only from members whose dc tag has the value "ny". To specify a priority-order for tag sets, provide a list of tag sets: [{'dc': 'ny'}, {'dc': 'la'}, {}]. A final, empty tag set, {}, means “read from any member that matches the mode, ignoring tags.” MongoReplicaSetClient tries each set of tags in turn until it finds a set of tags with at least one matching member.

class pymongo.read_preferences.PrimaryPreferred(tag_sets=None)

PrimaryPreferred read preference.

  • When directly connected to one mongod queries are allowed to standalone servers, to a replica set primary, or to replica set secondaries.
  • When connected to a mongos queries are sent to the primary of a shard if available, otherwise a shard secondary.
  • When connected to a replica set queries are sent to the primary if available, otherwise a secondary.
Parameters:
  • tag_sets: The tag_sets to use if the primary is not available.
document

Read preference as a document.

mode

The mode of this read preference instance.

name

The name of this read preference.

tag_sets

Set tag_sets to a list of dictionaries like [{‘dc’: ‘ny’}] to read only from members whose dc tag has the value "ny". To specify a priority-order for tag sets, provide a list of tag sets: [{'dc': 'ny'}, {'dc': 'la'}, {}]. A final, empty tag set, {}, means “read from any member that matches the mode, ignoring tags.” MongoReplicaSetClient tries each set of tags in turn until it finds a set of tags with at least one matching member.

class pymongo.read_preferences.Secondary(tag_sets=None)

Secondary read preference.

  • When directly connected to one mongod queries are allowed to standalone servers, to a replica set primary, or to replica set secondaries.
  • When connected to a mongos queries are distributed among shard secondaries. An error is raised if no secondaries are available.
  • When connected to a replica set queries are distributed among secondaries. An error is raised if no secondaries are available.
Parameters:
  • tag_sets: The tag_sets to use with this read_preference
document

Read preference as a document.

mode

The mode of this read preference instance.

name

The name of this read preference.

tag_sets

Set tag_sets to a list of dictionaries like [{‘dc’: ‘ny’}] to read only from members whose dc tag has the value "ny". To specify a priority-order for tag sets, provide a list of tag sets: [{'dc': 'ny'}, {'dc': 'la'}, {}]. A final, empty tag set, {}, means “read from any member that matches the mode, ignoring tags.” MongoReplicaSetClient tries each set of tags in turn until it finds a set of tags with at least one matching member.

class pymongo.read_preferences.SecondaryPreferred(tag_sets=None)

SecondaryPreferred read preference.

  • When directly connected to one mongod queries are allowed to standalone servers, to a replica set primary, or to replica set secondaries.
  • When connected to a mongos queries are distributed among shard secondaries, or the shard primary if no secondary is available.
  • When connected to a replica set queries are distributed among secondaries, or the primary if no secondary is available.
Parameters:
  • tag_sets: The tag_sets to use with this read_preference
document

Read preference as a document.

mode

The mode of this read preference instance.

name

The name of this read preference.

tag_sets

Set tag_sets to a list of dictionaries like [{‘dc’: ‘ny’}] to read only from members whose dc tag has the value "ny". To specify a priority-order for tag sets, provide a list of tag sets: [{'dc': 'ny'}, {'dc': 'la'}, {}]. A final, empty tag set, {}, means “read from any member that matches the mode, ignoring tags.” MongoReplicaSetClient tries each set of tags in turn until it finds a set of tags with at least one matching member.

class pymongo.read_preferences.Nearest(tag_sets=None)

Nearest read preference.

  • When directly connected to one mongod queries are allowed to standalone servers, to a replica set primary, or to replica set secondaries.
  • When connected to a mongos queries are distributed among all members of a shard.
  • When connected to a replica set queries are distributed among all members.
Parameters:
  • tag_sets: The tag_sets to use with this read_preference
document

Read preference as a document.

mode

The mode of this read preference instance.

name

The name of this read preference.

tag_sets

Set tag_sets to a list of dictionaries like [{‘dc’: ‘ny’}] to read only from members whose dc tag has the value "ny". To specify a priority-order for tag sets, provide a list of tag sets: [{'dc': 'ny'}, {'dc': 'la'}, {}]. A final, empty tag set, {}, means “read from any member that matches the mode, ignoring tags.” MongoReplicaSetClient tries each set of tags in turn until it finds a set of tags with at least one matching member.

class pymongo.read_preferences.ReadPreference

An enum that defines the read preference modes supported by PyMongo.

See High Availability and PyMongo for code examples.

A read preference is used in three cases:

MongoClient connected to a single mongod:

  • PRIMARY: Queries are allowed if the server is standalone or a replica set primary.
  • All other modes allow queries to standalone servers, to a replica set primary, or to replica set secondaries.

MongoClient initialized with the replicaSet option:

  • PRIMARY: Read from the primary. This is the default, and provides the strongest consistency. If no primary is available, raise AutoReconnect.
  • PRIMARY_PREFERRED: Read from the primary if available, or if there is none, read from a secondary.
  • SECONDARY: Read from a secondary. If no secondary is available, raise AutoReconnect.
  • SECONDARY_PREFERRED: Read from a secondary if available, otherwise from the primary.
  • NEAREST: Read from any member.

MongoClient connected to a mongos, with a sharded cluster of replica sets:

  • PRIMARY: Read from the primary of the shard, or raise OperationFailure if there is none. This is the default.
  • PRIMARY_PREFERRED: Read from the primary of the shard, or if there is none, read from a secondary of the shard.
  • SECONDARY: Read from a secondary of the shard, or raise OperationFailure if there is none.
  • SECONDARY_PREFERRED: Read from a secondary of the shard if available, otherwise from the shard primary.
  • NEAREST: Read from any shard member.
PRIMARY = Primary()
PRIMARY_PREFERRED = PrimaryPreferred(tag_sets=None)
SECONDARY = Secondary(tag_sets=None)
SECONDARY_PREFERRED = SecondaryPreferred(tag_sets=None)
NEAREST = Nearest(tag_sets=None)

Previous topic

pool – Pool module for use with a MongoDB client.

Next topic

results – Result class definitions

This Page