run_local_modelverse.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import subprocess
  2. import sys
  3. import os
  4. # sys.executable to use the same Python interpreter used to invoke this command
  5. if len(sys.argv) < 2:
  6. port = "8001"
  7. else:
  8. port = sys.argv[1]
  9. try:
  10. # Compile all SCCD models first
  11. os.chdir("wrappers")
  12. subprocess.check_call([sys.executable, "-m", "sccd.compiler.sccdc", "-p", "threads", "modelverse_SCCD.xml"])
  13. os.chdir("../hybrid_server")
  14. subprocess.check_call([sys.executable, "-m", "sccd.compiler.sccdc", "-p", "threads", "server.xml"])
  15. os.chdir("..")
  16. # Start up all services with auto-detection
  17. import glob
  18. service_paths = glob.glob("services/*/main.py")
  19. services = []
  20. for service_path in service_paths:
  21. print("[SERVICE] loaded " + service_path)
  22. service = subprocess.Popen([sys.executable, service_path, "127.0.0.1:%s" % port])
  23. services.append(service)
  24. os.chdir("hybrid_server")
  25. program_to_execute = [sys.executable, "run_mvk_server.py", port]
  26. #program_to_execute = [sys.executable, "run_mvk_server.py", port, "--kernel=generated"]
  27. server = subprocess.Popen(program_to_execute)
  28. server.wait()
  29. finally:
  30. # Stop the server
  31. try:
  32. server.terminate()
  33. except:
  34. pass
  35. # Terminate all services as well
  36. for service in services:
  37. try:
  38. service.terminate()
  39. except:
  40. pass