• EnglishEspañol日本語한국어Português
  • EntrarComeçar agora

Esta tradução de máquina é fornecida para sua comodidade.

In the event of any inconsistency between the English version and the translated version, the English versionwill take priority. Please visit this page for more information.

Criar um problema

Ativar aviso do aplicativo (Python)

Problema

Importante

Observe que isso só será um problema se nenhum dado estiver sendo relatado.

Você está usando o agente Python mais recente e vê uma entrada de log com uma mensagem de aviso como:

Attempt to activate application in a process different to where the agent harvest thread was started.

OU:

Attempt to reactivate application or record transactions in a process different to where the agent was already registered.

O aplicativo é exibido como relatório na interface do New Relic, mas nenhum dado é relatado ao New Relic.

Solução

Para resolver este problema com seu aplicativo:

  1. Mova todas as chamadas para newrelic.agent.register_application ou newrelic.agent.application dentro das funções dentro de uma verificação __name__ == __main__ .

  2. Se você não tiver certeza de onde as chamadas para newrelic.agent.register_application ou newrelic.agent.application estão ocorrendo, use o log de depuração do agente para procurar uma entrada contendo:

    newrelic.core.agent DEBUG - Application was activated from:
  3. Use o rastreamento da entrada da chamada que ativou o agente. Consulte os seguintes quadros, que são considerados normais:

    File "newrelic/api/transaction.py", line x, in __init__
    application.activate()
    File "newrelic/hooks/application_celery.py", line x, in process_initializer
    application_instance().activate()
  4. Se a ativação estiver ocorrendo em um local diferente, corrija esse problema seguindo este exemplo:

    Before:

    import newrelic.agent
    # This will cause the agent to activate whenever custom_event is imported
    app = newrelic.agent.application()
    def custom_event():
    newrelic.agent.record_custom_event('CustomEvent', {}, application=app)

    After:

    import newrelic.agent
    def custom_event():
    app = newrelic.agent.application()
    newrelic.agent.record_custom_event('CustomEvent', {}, application=app)

Para outras dicas quando nenhum dado aparece, consulte a documentação de resolução de problemas do Python.

Causa

Existem duas causas principais para esse problema. A primeira é criar uma instância de aplicativo várias vezes ou criar uma instância de aplicativo antes da bifurcação.

  1. Isso geralmente é causado por uma chamada para newrelic.agent.register_application ou newrelic.agent.application que ocorre no momento da importação.

    Example:

    import newrelic.agent
    # This will cause the agent to activate whenever custom_event is imported
    app = newrelic.agent.application()
    def custom_event():
    newrelic.agent.record_custom_event('CustomEvent', {}, application=app)
  2. Esse problema também pode ocorrer quando serviços de monitoramento como o celery, onde um processo pai principal lança processos de trabalho. Ocorre quando uma instância de aplicativo do agente é criada no processo principal antes da bifurcação dos processos de trabalho. Como o agente é lançado no processo pai, nenhum dado é coletado no processo filho.

Copyright © 2024 New Relic Inc.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.