|
import subprocess |
|
import sys |
|
import time |
|
from threading import Thread |
|
import os |
|
import signal |
|
|
|
def run_fastapi(): |
|
print("Starting FastAPI server...") |
|
subprocess.run([sys.executable, "-m", "uvicorn", "app:app", "--host", "0.0.0.0", "--port", "8000"]) |
|
|
|
def run_streamlit(): |
|
print("Starting Streamlit server...") |
|
subprocess.run([sys.executable, "-m", "streamlit", "run", "app.py"]) |
|
|
|
def main(): |
|
|
|
fastapi_thread = Thread(target=run_fastapi) |
|
fastapi_thread.daemon = True |
|
fastapi_thread.start() |
|
|
|
|
|
time.sleep(2) |
|
|
|
|
|
streamlit_thread = Thread(target=run_streamlit) |
|
streamlit_thread.daemon = True |
|
streamlit_thread.start() |
|
|
|
try: |
|
|
|
while True: |
|
time.sleep(1) |
|
except KeyboardInterrupt: |
|
print("\nShutting down servers...") |
|
|
|
os.killpg(os.getpgid(0), signal.SIGTERM) |
|
sys.exit(0) |
|
|
|
if __name__ == "__main__": |
|
main() |