Как запустить одновременно два бесконечных процесса ? (FastAPI)
Вобщем я учусь писать тесты и хочу для тестовых нужд, чтобы тест сам запускал сервер uvicorn и ещё один сервер, который запускается из определённой папки командой npm start.
Видимо в синхронном коде это сделать не получится, т.к. uvicorn.run() собственно как и другой сервер, который запускается через npm start - это процессы бесконечные и как я их местами не менял, запускается всегда один, а до второго дело не доходит.
Подскажите, пожалуйста, может быть можно как-то запустить каждую команду в отдельном процессе?
Спасибо!
Мой код:
import uvicorn
import subprocess
if __name__ == '__main__':
uvicorn.run(
'main:app',
reload=True,
port=7777
)
subprocess.run('cd ~/Desktop/randomfolder && npm start', shell=True)
Ответы (1 шт):
Я бы рассмотрел использование supervisord.
Устанавливаете его в virtualenv pip install supervisor и создаете файл конфигурации supervisord.conf типа:
[program:uvicorn]
command=uvicorn main:app --port 7777
[program:npm]
command=npm start
directory=~/Desktop/randomfolder
Стартуете supervisord один раз, и потом запускаете все командой:
supervisorctl start all
Еще он понимает команды stop, restart, status и другие. Умеет перестартовывать приложения если они рухнули и много других полезностей.