Closed yks0000 closed 1 year ago
@yks0000 We will check this issue with our next level team and update you.
@vrdmr Can you please have a look into this issue.
@vrdmr @YunchuWang Any update on this please?
@YunchuWang Could you please have a look into the above issue
@yks0000 I'll clone your repo and isolate the issue.
There is a new API for the sample that removes the need for nest-asyncio
and changes the main function to:
async def main(req: func.HttpRequest, context: func.Context) -> func.HttpResponse:
return await func.AsgiMiddleware(app).handle_async(req, context)
@yks0000 I've submitted a PR to your sample with the changes to the sample for v1.12 of the functions library
https://github.com/yks0000/az-function-fastapi/pull/1
This fixes the hanging process problem, but the app returns no response and if the add_process_time_header()
function is commented out it works correctly.
I'll continue looking at this to see how the middleware chains calls to other middleware.
Looking deeper into the issue with a debugger, when the custom middleware is added, the http.response.body
message is never sent to the Azure functions library code for handling ASGI applications. I don't think it's an issue specifically with the middleware, but having 2 items in the FastAPI middleware collection seems to cause some issue
2022-11-29T02:35:00.066Z] Received {'type': 'http.response.start', 'status': 200, 'headers': [(b'content-length', b'39'), (b'content-type', b'application/json')]} from ASGI worker.
[2022-11-29T02:35:00.066Z] Received {'type': 'http.response.body', 'body': b'{"message":"Hello from Azure Function"}'} from ASGI worker.
Thanks @tonybaloney for checking this.
I've submitted a fix to the related package, it might take a while for this to roll through. https://github.com/Azure/azure-functions-python-library/pull/153
In the meantime only 1 piece of middleware is supported.
Investigative information
Please provide the following:
Repro steps
Provide the steps required to reproduce the problem:
__init__.py
:Complete code including config is available in GitHub repo: https://github.com/yks0000/az-function-fastapi/tree/azure-worker-issue To start function app:
func host start --verbose
Expected behavior
Provide a description of the expected behavior.
It should return a response when we access http://0.0.0.0:7071/
Actual behavior
Provide a description of the actual behavior observed.
No response and running forever.
Known workarounds
Provide a description of any known workarounds.
No workaround but If we stop using middleware (as below), it works, but the requirement is to use middleware.
Middleware Doc: https://fastapi.tiangolo.com/tutorial/middleware/
Contents of the requirements.txt file:
Provide the requirements.txt file to help us find out module related issues.
Related information
Provide any related information