File size: 1,045 Bytes
a3d0150
 
 
 
 
 
 
722e300
a3d0150
 
 
 
722e300
 
a3d0150
722e300
 
a3d0150
 
 
 
 
 
 
 
722e300
 
 
 
 
 
 
 
a3d0150
722e300
a3d0150
722e300
 
 
a3d0150
722e300
 
 
a3d0150
 
722e300
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#!/usr/bin/env python3

import subprocess
import signal
import sys
import logging

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

class ServiceManager:
    def __init__(self):
        self.process = None

    def run_streamlit(self):
        logger.info("🖥️ 启动 Streamlit...")

        cmd = [
            "streamlit", "run",
            "src/app.py",
            "--server.port=8501",
            "--server.address=0.0.0.0",
            "--server.enableCORS=false",
            "--server.enableXsrfProtection=false",
        ]

        self.process = subprocess.Popen(cmd)
        logger.info("✅ Streamlit 已启动")

    def stop(self, *args):
        logger.info("🛑 关闭服务...")
        if self.process:
            self.process.terminate()
        sys.exit(0)

    def run(self):
        signal.signal(signal.SIGINT, self.stop)
        signal.signal(signal.SIGTERM, self.stop)

        self.run_streamlit()

        self.process.wait()


if __name__ == "__main__":
    ServiceManager().run()