Lagt till konfigurering från fil samt rensat ut oanvänd kod

This commit is contained in:
Joakim Persson
2024-07-18 17:13:02 +02:00
parent fd31d583af
commit c4e4d8ded0
+43 -14
View File
@@ -1,21 +1,45 @@
# Start all services
import subprocess
import threading
import os
import yaml
from backend import run_flask
import socket
import urllib.parse
def start_frontend():
host = 'localhost' # or the address of your server
port = 8000 # change to your server's port
def configure():
# Load configuration file that defines parameters for services
with open('./smartassist/config/smartassist.yaml') as f:
config = yaml.safe_load(f)
# 1. Find the API Key environment variable name
api_key_env = None
for key, value in config['ollama'].items():
if isinstance(value, str) and value.startswith("${") and value.endswith("}"):
api_key_env = value[2:-1] # Extract name between ${}
# 2. Obtain API Key if an environment variable was found
api_key = None
if api_key_env:
api_key = os.getenv(api_key_env)
else:
print("Warning: Environment variable reference not found in YAML configuration.")
# Update the config dictionary with the actual API key (or None if not found)
config['ollama']['api_key'] = api_key
return config
def start_frontend(config):
parsed_url = urllib.parse.urlparse(config['frontend']['url'])
hostname = parsed_url.netloc.split(':')[0] # Split by ':' and take the first part, i.e., 'localhost', IP, or domain name
port = parsed_url.port # This is the server port
# Use the socket module in Python to check whether a port is in use,
# which would indicate that a server is already running on that port.
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
try:
s.bind((host, port))
s.bind((hostname, port))
print("No server is running on this host and port.")
# Start frontend (web server) as a separate process
subprocess.Popen(["python", "-m", "http.server", str(port)])
@@ -28,15 +52,20 @@ def start_frontend():
print(f"Failed to start frontend: {e}")
def start_backend():
def start_backend(config):
parsed_url = urllib.parse.urlparse(config['backend']['url'])
# hostname = parsed_url.netloc.split(':')[0] # Split by ':' and take the first part, i.e., 'localhost', IP, or domain name
port = parsed_url.port # This is the server port
print(f"{port}")
try:
# Start backend as a separate thread
# threading.Thread(target=run_flask).start() # Flask's built-in server doesn't support running in a separate thread.
run_flask()
run_flask(port = port)
except Exception as e:
print(f"Failed to start backend: {e}")
if __name__ == '__main__':
start_frontend() # No need for this as the backend starts a web server on its own.
start_backend()
conf = configure() # Read config from file and set up config dict
print(conf)
start_frontend(config=conf) # No need for this as the backend starts a web server on its own.
start_backend(config=conf)