Я пытаюсь запустить свой флот как веб-приложение из Docker-контейнера, но получаю следующее сообщение об ошибке:
RuntimeError: asyncio.run() cannot be called from a running event loop
2024-05-27T18:46:46.450774857Z sys:1: RuntimeWarning: coroutine 'app_async' was never awaited
Я пробовал запустить приложение с открытым интерфейсом asgi и без него:
def run_web():
ft.app(target=main, export_asgi_app=True)
Мой сценарий точки входа выглядит следующим образом:
#!/usr/bin/env bash
source .venv/bin/activate
uvicorn --factory reggui.main:run_web --host 0.0.0.0 --port 8060
Есть какие-нибудь подсказки о том, что я могу упустить?
ОБНОВЛЕНИЕ:
Похоже, что с uvicorn функция ввода (в данном случае main) должна быть асинхронной функцией.
Теперь приложение запускается, но появляется другая ошибка, которая может быть связана с Docker, но я не уверен:
INFO: Will watch for changes in these directories: ['/']
2024-05-28T11:57:22.142940833Z INFO: Uvicorn running on http://0.0.0.0:8060 (Press CTRL+C to quit)
2024-05-28T11:57:22.142967464Z INFO: Started reloader process [8] using WatchFiles
2024-05-28T11:57:22.899964258Z WARNING: ASGI app factory detected. Using it, but please consider setting the --factory flag explicitly.
2024-05-28T11:57:22.900006979Z INFO: Started server process [10]
2024-05-28T11:57:22.900026356Z INFO: Waiting for application startup.
2024-05-28T11:57:22.900085509Z INFO: ASGI 'lifespan' protocol appears unsupported.
2024-05-28T11:57:22.900107430Z INFO: Application startup complete.
2024-05-28T11:57:53.724415871Z ERROR: Exception in ASGI application
2024-05-28T11:57:53.724433625Z Traceback (most recent call last):
2024-05-28T11:57:53.724436010Z File "/.venv/lib/python3.11/site-packages/uvicorn/protocols/http/httptools_impl.py", line 411, in run_asgi
2024-05-28T11:57:53.724438114Z result = await app( # type: ignore[func-returns-value]
2024-05-28T11:57:53.724439907Z ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2024-05-28T11:57:53.724441671Z File "/.venv/lib/python3.11/site-packages/uvicorn/middleware/proxy_headers.py", line 69, in __call__
2024-05-28T11:57:53.724443514Z return await self.app(scope, receive, send)
2024-05-28T11:57:53.724445257Z ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2024-05-28T11:57:53.724447001Z File "/.venv/lib/python3.11/site-packages/uvicorn/middleware/asgi2.py", line 14, in __call__
2024-05-28T11:57:53.724448804Z instance = self.app(scope)
2024-05-28T11:57:53.724450548Z ^^^^^^^^^^^^^^^
2024-05-28T11:57:53.724452281Z TypeError: 'NoneType' object is not callable
2024-05-28T11:57:53.724445979Z INFO: 172.20.0.1:34188 - "GET / HTTP/1.1" 500 Internal Server Error
2024-05-28T11:57:53.745830886Z ERROR: Exception in ASGI application
2024-05-28T11:57:53.745845213Z Traceback (most recent call last):
2024-05-28T11:57:53.745847708Z File "/.venv/lib/python3.11/site-packages/uvicorn/protocols/http/httptools_impl.py", line 411, in run_asgi
2024-05-28T11:57:53.745849792Z result = await app( # type: ignore[func-returns-value]
2024-05-28T11:57:53.745851786Z ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2024-05-28T11:57:53.745853689Z File "/.venv/lib/python3.11/site-packages/uvicorn/middleware/proxy_headers.py", line 69, in __call__
2024-05-28T11:57:53.745852287Z INFO: 172.20.0.1:34198 - "GET /favicon.ico HTTP/1.1" 500 Internal Server Error
2024-05-28T11:57:53.745855603Z return await self.app(scope, receive, send)
2024-05-28T11:57:53.745871904Z ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2024-05-28T11:57:53.745874589Z File "/.venv/lib/python3.11/site-packages/uvicorn/middleware/asgi2.py", line 14, in __call__
2024-05-28T11:57:53.745882965Z instance = self.app(scope)
2024-05-28T11:57:53.745884188Z ^^^^^^^^^^^^^^^
2024-05-28T11:57:53.745885290Z TypeError: 'NoneType' object is not callable
Подробнее здесь: https://stackoverflow.com/questions/785 ... ng-uvicorn