text: Title: Uvicorn fails "quietly" upon a circular import error
  Body: ### Discussed in https://github.com/encode/uvicorn/discussions/2034
  
  <div type='discussions-op-text'>
  
  <sup>Originally posted by **mikeedjones** July  8, 2023</sup>
  From this [comment](https://github.com/tiangolo/fastapi/discussions/9838#discussioncomment-6391673) and discussion.
  
  When there is a circular import in the app, uvicorn reports `ERROR:    Error loading ASGI app. Could not import module "main".` without exposing the stacktrace which would be reported if you ran the code using `python main.py`. MRE below. 
  
  ```python
  # main.py
  from bar import Bar
  
  class Foo:
      pass
  
  async def app(scope, receive, send):
      assert scope['type'] == 'http'
  
  ```
  
  ```python
  #bar.py
  from main import Foo
  
  class Bar:
      pass
  
  ```
  
  Running with 
  ```
  uvicorn main:app
  ``` 
  only results in 
  ```
  ERROR:    Error loading ASGI app. Could not import module "main".
  ```
  whereas running 
  ```
  python main.py
  ``` 
  reports the far more useful 
  ```
  ImportError: cannot import name 'Bar' from partially initialized module 'bar' (most likely due to a circular import) (/workspaces/fastapi/bar.py)
  ```
  
  Not sure how you'd start debugging this one I'm afraid - or if its even a "bug". For comparison syntax errors are reported correctly.</div>