Skip to content

Django Channels Websocket Trace #2123

@abhinavsingh

Description

@abhinavsingh

Describe the bug:

I was expecting APM to help me understand whats going within my websocket connections (Django + Channels + Daphne). However, the very first line of ASGITracingMiddleware ignores non-http scopes:

async def __call__(self, scope: "Scope", receive: "ASGIReceiveCallable", send: "ASGISendCallable") -> None:
        if scope["type"] != "http":
            await self._app(scope, receive, send)
            return

To Reproduce

  1. Install elastic-apm
  2. Configure ELASTIC_APM settings
  3. Configure ASGITracingMiddleware middleware
  4. Kibana shows the service name but no traces

Environment (please complete the following information)

  • OS: [e.g. Linux]
  • Python version: 3.11
  • Framework and version [e.g. Django 2.1]:
Django==4.2.11
channels==4.0.0
channels-redis==4.1.0
daphne==4.1.0
  • APM Server version:
  • Agent version:
elastic-apm==6.23.0
elastic-transport==8.15.0
elasticsearch==8.15.0

Is this expected or a bug?

Thank you
Abhinav

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions