Существует оконное приложение, написанное с использованием PyQt5. Необходимо, чтобы к нему можно было обратиться через два интерфейса - окно PyQt и вызовом API. Для построения API используется FastAPI.
Проблема заключается в том, что запуск приложения PyQt командой app.exec_() блокирует дальнейший ход выполнения программы и FastAPI (uvicorn.run(...)) не запускается. Естественно как только завершается приложение PyQt исполнение кода продолжается и сразу запускается FastAPI.
Аналогично с другими фреймами - хочу узнать как запускать несколько фреймворков (по сути приложений) как одно логическое приложение с несколькими модулями.
Мой вопрос:
Как можно запустить приложение, использующее несколько фреймворков одновременно?
Никак, не надо смешивать мягкое с тёплым. Если хотите сделать два интерфейса, то делаете ядро приложения с API, web-приложение и gui-приложение, использующие API ядра. И все три запускаться должны отдельно.
Технически можно запускать их в разных потоках. Но это чревато кучей других проблем, типичных для многопоточности.
Может, имеет смысл переделать приложение на PyQT так, чтобы оно само использова FastAPI как бэкэнд?