(sock_info, db, coll, query, ntoreturn,
                 slave_ok, codec_options, read_preference, cmd, listeners)
return result
Simple query helper for retrieving a first (and possibly only) batch.
Simple query helper for retrieving a first (and possibly only) batch.
Simple query helper for retrieving a first ( and possibly only ) batch .
def _first_batch(sock_info, db, coll, query, ntoreturn,
                 slave_ok, codec_options, read_preference, cmd, listeners):
    """Simple query helper for retrieving a first (and possibly only) batch."""
    query = _Query(
        0, db, coll, 0, query, None, codec_options,
        read_preference, ntoreturn, 0, DEFAULT_READ_CONCERN, None)

    name = next(iter(cmd))
    duration = None
    publish = listeners.enabled_for_commands
    if publish:
        start = datetime.datetime.now()

    request_id, msg, max_doc_size = query.get_message(slave_ok,
                                                      sock_info.is_mongos)

    if publish:
        encoding_duration = datetime.datetime.now() - start
        listeners.publish_command_start(
            cmd, db, request_id, sock_info.address)
        start = datetime.datetime.now()

    sock_info.send_message(msg, max_doc_size)
    response = sock_info.receive_message(1, request_id)
    try:
        result = _unpack_response(response, None, codec_options)
    except Exception as exc:
        if publish:
            duration = (datetime.datetime.now() - start) + encoding_duration
            if isinstance(exc, (NotMasterError, OperationFailure)):
                failure = exc.details
            else:
                failure = _convert_exception(exc)
            listeners.publish_command_failure(
                duration, failure, name, request_id, sock_info.address)
        raise
    if publish:
        duration = (datetime.datetime.now() - start) + encoding_duration
        listeners.publish_command_success(
            duration, result, name, request_id, sock_info.address)

    return result
def _first_batch ( sock_info , db , coll , query , ntoreturn , slave_ok , codec_options , read_preference , cmd , listeners ) : query = _Query ( 0 , db , coll , 0 , query , None , codec_options , read_preference , ntoreturn , 0 , DEFAULT_READ_CONCERN , None ) name = next ( iter ( cmd ) ) duration = None publish = listeners . enabled_for_commands if publish : start = datetime . datetime . now ( ) request_id , msg , max_doc_size = query . get_message ( slave_ok , sock_info . is_mongos ) if publish : encoding_duration = datetime . datetime . now ( ) - start listeners . publish_command_start ( cmd , db , request_id , sock_info . address ) start = datetime . datetime . now ( ) sock_info . send_message ( msg , max_doc_size ) response = sock_info . receive_message ( 1 , request_id ) try : result = _unpack_response ( response , None , codec_options ) except Exception as exc : if publish : duration = ( datetime . datetime . now ( ) - start ) + encoding_duration if isinstance ( exc , ( NotMasterError , OperationFailure ) ) : failure = exc . details else : failure = _convert_exception ( exc ) listeners . publish_command_failure ( duration , failure , name , request_id , sock_info . address ) raise if publish : duration = ( datetime . datetime . now ( ) - start ) + encoding_duration listeners . publish_command_success ( duration , result , name , request_id , sock_info . address ) return result