apm-agent-python icon indicating copy to clipboard operation
apm-agent-python copied to clipboard

gunicorn + uvicorn + ASGI + flask is not working

Open sundarv85 opened this issue 1 year ago • 2 comments

Describe the bug:

When I run as gunicorn -w 4 run:app using its own wsgi, then I see data in Kibana.

When I run as gunicorn -w 4 -k uvicorn.workers.UvicornWorker run:asgi_app, then I do not see the transactions showing up.

To Reproduce

  1. Please use this repo: https://github.com/helloflask/flask-examples
  2. cd http
  3. Add a new file run.py with the contents to convert flask WSGI to ASGI
from app import app
from asgiref.wsgi import WsgiToAsgi

# Convert the Flask WSGI app to ASGI
asgi_app = WsgiToAsgi(app)

if __name__ == '__main__':
    app.run(debug=True)

  1. Now run with gunicorn -w 4 run:app or gunicorn -w 4 -k uvicorn.workers.UvicornWorker run:asgi_app
  2. Now access http://127.0.0.1:8000 - once with just gunicorn and once with uvicorn
  3. You will notice that with gunicorn, the transactions are captured, but with uvicorn, then home page transaction is not captured.
  4. OS: [e.g. Mac]
  • Python version: 3.11.6
  • Framework and version: Flask
  • Agent version: Latest

It seems related to #1331

sundarv85 avatar Nov 04 '24 05:11 sundarv85

Thanks for reporting. What's the reason to run a wsgi framework in an asgi worker?

xrmx avatar Nov 04 '24 10:11 xrmx

One of our teammates reported the issue and they use asgi with flask. And they reported that the issue happens only with uvicorn. So I just used this sample app to re-create the problem.

sundarv85 avatar Nov 05 '24 03:11 sundarv85