def description_changed(self, event): previous_server_type = event.previous_description.server_type new_server_type = event.new_description.server_type if new_server_type != previous_server_type: logger.debug( f"Server {event.server_address} changed type from {event.previous_description.server_type_name} to " f"{event.new_description.server_type_name}")
def description_changed(self, event): logger.debug( f"Topology description updated for topology id {event.topology_id}" ) previous_topology_type = event.previous_description.topology_type new_topology_type = event.new_description.topology_type if new_topology_type != previous_topology_type: logger.debug( f"Topology {event.topology_id} changed type from {event.previous_description.topology_type_name} to " f"{event.new_description.topology_type_name}") if not event.new_description.has_writable_server(): logger.debug("No writable servers available.") if not event.new_description.has_readable_server(): logger.debug("No readable servers available.")
def _end_trace_malloc(self): if not self.show_memory: return simple_logger.debug(msg="=== START SNAPSHOT ===") snapshot = tracemalloc.take_snapshot() snapshot = snapshot.filter_traces( filters=self._get_trace_malloc_filters()) for stat in snapshot.statistics(key_type="lineno", cumulative=True): simple_logger.debug(msg=f"{stat}") size, peak = tracemalloc.get_traced_memory() snapshot_size = tracemalloc.get_tracemalloc_memory() simple_logger.debug( msg=f"❕size={self._bytes_to_megabytes(size=size)}, " f"❗peak={self._bytes_to_megabytes(size=peak)}, " f"💾snapshot_size={self._bytes_to_megabytes(size=snapshot_size)}") tracemalloc.clear_traces() simple_logger.debug(msg="=== END SNAPSHOT ===")
def failed(self, event): logger.debug( f"Command {event.command_name} with request id {event.request_id} on server {event.connection_id} failed " f"in {event.duration_micros} microseconds")
def failed(self, event): logger.debug( f"Heartbeat to server {event.connection_id} failed with error {event.reply}" )
def opened(self, event): logger.debug(f"Topology with id {event.topology_id} opened")
def connection_created(self, event): logger.debug( f"[pool {event.address}][conn #{event.connection_id}] connection created" )
def succeeded(self, event): logger.debug( f"Heartbeat to server {event.connection_id} succeeded with reply {event.reply.document}" )
def create_client(self): """Create MongoDB client.""" logger.debug(msg="Creating MongoDB client") self.__class__.client = motor.motor_asyncio.AsyncIOMotorClient( self.db_url)
def _print_timing(self, name: str, precision: int = 6): if not self.show_timing: return simple_logger.debug( f"📊Execution timing of: '{name}' ⏱: {self._end_time - self._start_time:.{precision}f} seconds" )
def connection_checked_in(self, event): logger.debug( f"[pool {event.address}][conn #{event.connection_id}] connection checked into pool" )
def opened(self, event): logger.debug( f"Server {event.server_address} added to topology {event.topology_id}" )
def connection_check_out_failed(self, event): logger.debug( f"[pool {event.address}] connection check out failed, reason: {event.reason}" )
def connection_checked_out(self, event): logger.debug( f"[pool {event.address}][conn #{event.connection_id}] connection checked out of pool" )
def connection_check_out_started(self, event): logger.debug(f"[pool {event.address}] connection check out started")
def connection_closed(self, event): logger.debug( f"[pool {event.address}][conn #{event.connection_id}] connection closed, reason: {event.reason}" )
def connection_ready(self, event): logger.debug( f"[pool {event.address}][conn #{event.connection_id}] connection setup succeeded" )
def closed(self, event): logger.debug(f"Topology with id {event.topology_id} closed")
def succeeded(self, event): logger.debug( f"Command '{event.command_name}' with request id {event.request_id} on server {event.connection_id} " f"succeeded in {event.duration_micros} microseconds")
def retrieve_client(self) -> pymongo.MongoClient: """Retrieve existing MongoDB client or create it (at first call).""" if self.__class__.client is None: # pragma: no cover logger.debug(msg="Initialization of MongoDB") self.create_client() return self.__class__.client
def closed(self, event): logger.debug( f"Server {event.server_address} removed from topology {event.topology_id}" )
def delete_client(self): """Close MongoDB client.""" logger.debug(msg="Disconnecting from MongoDB") self.__class__.client.close() self.__class__.client = None # noqa
def started(self, event): logger.debug(f"Heartbeat sent to server {event.connection_id}")
def started(self, event): logger.debug( f"Command '{event.command_name}' with request id {event.request_id} started on server {event.connection_id}" )
def pool_closed(self, event): logger.debug(f"[pool {event.address}] pool closed")