Sintaxe
newrelic.agent.wsgi_application(application=None, name=None, group=None, framework=None)
Monitor transações da web marcando o ponto de entrada da aplicação WSGI.
Descrição
wsgi_application
é um decorador Python usado para monitor transações da web instrumentando o ponto de entrada da aplicação WSGI. O agente Python oferece suporte automaticamente à maioria das estruturas e servidores que usam WSGI. Se sua framework ou servidor web não for compatível, talvez seja necessário usar esta API como parte do processo de integração avançada.
Se não for possível usar o decorador wsgi_application
, você poderá usar um destes outros formatos de chamada:
The wrapper:
A chamada do wrapper é
WSGIApplicationWrapper
. É possível usar o wrapper em mais de um local para componentes distintos do aplicativo WSGI que podem estar empilhados. Nesse caso, o primeiro wrapper encontrado marca o início da transação e o agente determina o aplicativo de destino com base nesse primeiro wrapper (e ignora os subsequentes).The path-based wrapper:
A chamada do wrapper baseada em caminho é
wrap_wsgi_application
. Use isto se não for possível fazer referência ao objeto WSGI como uma variável no escopo de instrumentação. Isso leva o mesmo parâmetro do decorador com parâmetros adicionaismodule
eobject_path
.
Para obter uma explicação dos motivos para usar o decorador em vez dos wrappers, consulte Diferentes formatos de chamada.
Parâmetro
Parâmetro decorador
newrelic.agent.wsgi_application(application=None, name=None, group=None, framework=None)
O decorador wsgi_application
usa estes parâmetros:
Parâmetro | Descrição |
---|---|
string ou objeto de aplicativo | Opcional. O nome do aplicativo a ser associado a esses dados. O padrão é Se uma sequência for fornecida, ela deverá ser o nome exato do aplicativo e não poderá ser uma lista de nomes de aplicativos. Para obter mais informações sobre como gerar um objeto de aplicativo, consulte o método O aplicativo, mesmo se especificado, ainda poderá ser substituído se |
corda | Opcional, raramente usado. Define um nome de transação para todas as solicitações capturadas por meio do ponto de entrada WSGI. Geralmente não utilizado, porque normalmente não se deseja que todas as transações tenham o mesmo nome (ver também questão de agrupamento métrico). |
corda | Opcional, raramente usado. O |
tuple | Opcional. Uma tupla com duas strings representando o nome da framework e o número da versão. Por exemplo: |
Parâmetro do wrapper
newrelic.agent.WSGIApplicationWrapper(wrapped, application=None, name=None, group=None, framework=None)
Isso leva todos os parâmetros exigidos por wsgi_application
além de um parâmetro wrapped
:
Parâmetro | Descrição |
---|---|
objeto | Obrigatório. O objeto WSGI a ser empacotado. |
Parâmetro wrapper baseado em caminho
newrelic.agent.wrap_wsgi_application(module, object_path, application=None, name=None, group=None, framework=None)
Além do parâmetro exigido por wsgi_application
, esta chamada requer parâmetros adicionais module
e object_path
:
Parâmetro | Descrição |
---|---|
objeto ou string | Obrigatório. O módulo que contém o objeto WSGI. |
corda | Obrigatório. Representa o método de classe ou método para localizar o objeto WSGI em um arquivo. |
Exemplos
exemplo wsgi_application
Um exemplo do decorador sendo chamado sem o parâmetro opcional application
:
@newrelic.agent.wsgi_application()def application(environ, start_response): status = '200 OK' output = 'Hello World!'
response_headers = [('Content-type', 'text/plain'), ('Content-Length', str(len(output)))] start_response(status, response_headers)
return [output]
Exemplo de WSGIApplicationWrapper
Um exemplo de uso do WSGIApplicationWrapper
, que pode ser necessário se o decorador wsgi_application
não funcionar:
import osos.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")from django.core.wsgi import get_wsgi_applicationapplication = get_wsgi_application()
application = newrelic.agent.WSGIApplicationWrapper(application)
exemplo wrap_wsgi_application
Um exemplo de uso do wrapper baseado em caminho:
import newrelic.agentnewrelic.agent.initialize('newrelic.ini')
class Application(object): def application(self, environ, start_response): status = '200 OK' response_headers = [('Content-type', 'text/plain')] start_response(status, response_headers) return [b'Hello World']
newrelic.agent.wrap_wsgi_application(__name__, 'Application.application')