textual serve (python -m textual) startete immer die eingebaute Demo. Lösung: textual-serve Paket (v1.1.3) mit eigenem serve_tui.py Einstiegspunkt. Pro Browser-Verbindung wird tui_standalone.py als eigener Subprocess gestartet. Starten: python serve_tui.py --host 0.0.0.0 --port 8001
42 lines
1.2 KiB
Python
42 lines
1.2 KiB
Python
"""MCM TUI Web-Server via textual-serve.
|
||
|
||
Startet einen Web-Server, der die TUI pro Browser-Verbindung als Subprocess ausführt.
|
||
Voraussetzung: MCM API-Server muss bereits laufen (python main_api_only.py).
|
||
|
||
Verwendung:
|
||
python serve_tui.py [--host 0.0.0.0] [--port 8001]
|
||
"""
|
||
|
||
import asyncio
|
||
import sys
|
||
|
||
from textual_serve.server import Server
|
||
|
||
from config import settings
|
||
|
||
|
||
def main() -> None:
|
||
import argparse
|
||
|
||
parser = argparse.ArgumentParser(description="MCM TUI Web-Server")
|
||
parser.add_argument("--host", default="0.0.0.0", help="Host (default: 0.0.0.0)")
|
||
parser.add_argument(
|
||
"--port", type=int, default=settings.web_port, help=f"Port (default: {settings.web_port})"
|
||
)
|
||
args = parser.parse_args()
|
||
|
||
# Pfad zum Python-Interpreter im venv, damit alle Pakete verfügbar sind
|
||
python = sys.executable
|
||
command = f"{python} tui_standalone.py"
|
||
|
||
print(f"MCM TUI Web-Server startet auf http://{args.host}:{args.port}")
|
||
print(f"Subprocess-Befehl: {command}")
|
||
print("Ctrl+C zum Beenden.")
|
||
|
||
server = Server(command=command, host=args.host, port=args.port, title="MCM – MultiCustomerMessenger")
|
||
asyncio.run(server.serve())
|
||
|
||
|
||
if __name__ == "__main__":
|
||
main()
|