Sintaxe
newrelic.agent.datastore_trace(product, target, operation)Usado para chamadas de instrumentos para armazenamentos de dados.
Descrição
datastore_trace é usado para adicionar mais detalhes ao seu rastreamento da transação na forma de segmentos adicionais. Todas as chamadas reportadas com datastore_trace aparecerão na página do banco de dadosAPM . datastore_trace retorna uma parte de DatastoreTraceWrapper que pode ser usada como um decorador para uma função para cronometrar chamadas para seu armazenamento de dados.
O decorador datastore_trace pode ser usado em geradores e corrotinas com agente versão 2.102.0.85 ou superior. O tempo desses objetos começa quando o consumo começa e termina quando o objeto se esgota ou sai do escopo. Esta é uma mudança em relação às versões anteriores, onde a métrica representava o tempo necessário para criar o gerador ou o próprio objeto de corrotina.
Se você não puder usar o decorador em seu aplicativo, poderá usar um destes outros formatos de chamada:
- The context manager: O formulário do gerenciador de contexto é 
DatastoreTrace. - The wrapper: o formulário do wrapper é 
DatastoreTraceWrapper. Pode ser usado para retornar uma função encapsulada sem o uso de um decorador. - The path-based wrapper: o formulário wrapper baseado em caminho é 
wrap_datastore_trace. Isso aplica oDatastoreTraceWrappera um determinado objeto por meio de monkey patching. Isso usa os mesmos parâmetros do decorador mais um parâmetromoduleeobject_pathadicional. 
Para obter uma explicação sobre os usos desses diferentes formatos de chamada, consulte Diferentes formatos de chamada. Consulte Exemplos para exemplos de chamadas.
Parâmetro
Parâmetro para decorador
newrelic.agent.datastore_trace(product, target, operation)Esta chamada inclui estes parâmetros:
Parâmetro  | Descrição  | 
|---|---|
 corda  | Obrigatório. O nome do fornecedor. Exemplo:   | 
 corda  | Obrigatório. O nome da coleção ou tabela. Se não houver destino,   | 
 corda  | Obrigatório. O nome da operação do armazenamento de dados. Exemplos:   | 
Parâmetro para gerenciador de contexto
newrelic.agent.DatastoreTrace(product, target, operation, host=None, port_path_or_id=None, database_name=None)O parâmetro para o gerenciador de contexto inclui todos os parâmetros de datastore_trace mais os parâmetros adicionais host, port_path_or_id e database_name .
Parâmetro  | Descrição  | 
|---|---|
 corda  | Opcional. O nome do host ou IP do servidor do armazenamento de dados.  | 
 corda  | Opcional. A porta usada para conectar-se ao servidor do armazenamento de dados. Se estiver conectando com um soquete unix, este pode ser o caminho para o soquete.  | 
 corda  | Opcional. O nome do banco de dados.  | 
Parâmetro do wrapper
newrelic.agent.DatastoreTraceWrapper(wrapped, product, target, operation)Os parâmetros do wrapper incluem todos os parâmetros para datastore_trace e um parâmetro wrapped :
Parâmetro  | Descrição  | 
|---|---|
 função  | Obrigatório. A função que está sendo encapsulada.  | 
Parâmetro de encapsulamento baseado em caminho
newrelic.agent.wrap_datastore_trace(module, object_path, product, target, operation)parâmetro inclui todos os parâmetros para datastore_trace e estes parâmetros:
Parâmetro  | Descrição  | 
|---|---|
 objeto  | Obrigatório. O módulo que contém a função a ser instrumentada.  | 
 corda  | Obrigatório. O caminho para o local da função.  | 
Valores de retorno
datastore_trace retorna uma parcial DatastoreTraceWrapper() .
Exemplos
datastore_trace 
Um exemplo de uso do decorador datastore_trace :
import newrelic.agent
class _Database(UserDict.DictMixin):
    ...
    @newrelic.agent.datastore_trace('Redis', None, 'get')    def _get(self, key):        ...Um exemplo de uso do decorador datastore_trace com corrotinas nativas:
import newrelic.agent
class _Database(UserDict.DictMixin):
    ...
    @newrelic.agent.datastore_trace('Redis', None, 'get')    async def _get(self, key):        ...Exemplo de gerenciador de contexto
Um exemplo de uso do gerenciador de contexto DatastoreTrace : isso fornecerá o tempo necessário para executar `custom_action`.
import newrelic.agent
def complex_query(a, b, c):    with Connection(host, port, db) as conn:        with newrelic.agent.DatastoreTrace(            product="Custom Product",            target=None,            operation="custom",            host=host,            port_path_or_id=port,            database_name=db,        ):
            conn.custom_action()Exemplo de wrapper
Um exemplo de uso do DatastoreTraceWrapper:
import newrelic.agent
class _Database(UserDict.DictMixin):
    ...
    def _get(self, key):        ...
_Database._get = newrelic.agent.DatastoreTraceWrapper(    _Database._get, "Redis", None, "get")