The main reason for the performance issues was all the blocking IO from the ORM, which previously had all been monkey patched with gevent / eventlet.
Interestingly I’ve decided to approach this from the other direction. Doing/Keeping WSGI and mounting ASGI (preferably should be in the django docs)… instead of doing ASGI and mounting WSGI ( fastapi documenation ).
The fastapi and django docs on the topic range from a bit sparse to a bit misleading.
Anyways … using the werkzeug DispatcherMiddleware has been fine so far.
For example on WSGI with ASGI mounted: benchmark-django-fastapi/wsgi_with_slow_api_mounted.py at main · allen-munsch/benchmark-django-fastapi · GitHub