PC
у меня есть приложение асинхронное. одна из тасков в этом приложении запуск фастапи сервера, через ювикорн. в данном приложении фастапи выполняет как бы информационную функцию, отдает хартбиты, и всякую диагностику, общение с другими приложениями через реббит происходит
ВЭБ сервер запускается в одном потоке через метод serve(), но к нему есть конфиг
config = Config(
app=server_application,
loop=self.loop,
host='0.0.0.0',
port=port,
log_config=server_application.get_config_log()
)
self.loop это тот же луп, в котором крутиться все приложение и менеджеры для очередей
когда я тестирую это приложение, то после теста отменяют все таски в евент.лупе,
и вот у меня висит такой таск
task=<Task pending name='Task-11' coro=<Server.serve() running at /venv/lib/python3.8/site-packages/uvicorn/server.py:69> wait_for=<Future pending cb=[<TaskWakeupMethWrapper object at 0x7fc773930910>()]>>
и при завершении теста ругается, что
Task was destroyed but it is pending!
task: <Task pending name='Task-14' coro=<LifespanOn.main() running at /venv/lib/python3.8/site-packages/uvicorn/lifespan/on.py:55> wait_for=<Future pending cb=[<TaskWakeupMethWrapper object at 0x7fc772885dc0>()]>>
но таск 14 я сам не запускал. видимо он запускается как-то внутри юви корна.
как мне корректно завершить ювикорн? Или хотя бы залезть внутрь его тасков и посмотреть их чтобы можно было завершить.