MCPcopy Index your code
hub / github.com/mongodb/mongo-python-driver / _run

Method _run

pymongo/synchronous/monitor.py:210–250  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

208 self._pool.reset()
209
210 def _run(self) -> None:
211 try:
212 prev_sd = self._server_description
213 try:
214 self._server_description = self._check_server()
215 except _OperationCancelled as exc:
216 _sanitize(exc)
217 # Already closed the connection, wait for the next check.
218 self._server_description = ServerDescription(
219 self._server_description.address, error=exc
220 )
221 if prev_sd.is_server_type_known:
222 # Immediately retry since we've already waited 500ms to
223 # discover that we've been cancelled.
224 self._executor.skip_sleep()
225 return
226
227 # Update the Topology and clear the server pool on error.
228 self._topology.on_change(
229 self._server_description,
230 reset_pool=self._server_description.error,
231 interrupt_connections=isinstance(self._server_description.error, NetworkTimeout),
232 )
233
234 if self._stream and (
235 self._server_description.is_server_type_known
236 and self._server_description.topology_version
237 ):
238 self._start_rtt_monitor()
239 # Immediately check for the next streaming response.
240 self._executor.skip_sleep()
241
242 if self._server_description.error and prev_sd.is_server_type_known:
243 # Immediately retry on network errors.
244 self._executor.skip_sleep()
245 except ReferenceError:
246 # Topology was garbage-collected.
247 self.close()
248 finally:
249 if self._executor._stopped:
250 self._rtt_monitor.close()
251
252 def _check_server(self) -> ServerDescription:
253 """Call hello or read the next streaming response.

Callers 1

targetMethod · 0.45

Calls 7

_check_serverMethod · 0.95
_start_rtt_monitorMethod · 0.95
closeMethod · 0.95
ServerDescriptionClass · 0.90
_sanitizeFunction · 0.70
skip_sleepMethod · 0.45
on_changeMethod · 0.45

Tested by

no test coverage detected