import threading import requests import logging import time from proxy_server import ProxyServer # Configure logging logger = logging.getLogger(__name__) class ProxyThread(threading.Thread): def __init__(self, host='localhost', port=5000): threading.Thread.__init__(self) secret_key='your_secret_key_here' self.proxy_server = ProxyServer(secret_key, host, port) def run(self): """Starts the proxy server in a thread""" logger.info("ProxyThread starting") self.proxy_server.run() def stop(self): """Stops the proxy server by sending a shutdown request""" logger.info("Stopping ProxyThread") try: response = requests.post(f'http://{self.proxy_server.host}:{self.proxy_server.port}/shutdown', timeout=5) logger.info(f"Shutdown request sent. Response: {response.text}") except requests.RequestException as e: logger.error(f"Error sending shutdown request: {e}") # Wait for the server to shut down timeout = 10 start_time = time.time() while self.proxy_server.is_running and time.time() - start_time < timeout: time.sleep(0.1) if self.proxy_server.is_running: logger.warning("Server did not shut down in time") else: logger.info("Server has been shut down") self.join(timeout=5) logger.info("ProxyThread stopped")