pythonでWebサーバーを起動して、ブラウザを開く

pythonでWebサーバーを起動して、ブラウザを開くというのをやってみたくなった。

とりあえず、これで良いのかな。

VSCodeでremote接続して、コンソールから起動するとsshを超えて、ブラウザを表示できるってのがちょっと楽だね。

import socket
import threading
import webbrowser
import os
import signal
import sys
from http.server import SimpleHTTPRequestHandler, HTTPServer

# サーバーのホストとポートを設定
HOST = 'localhost'
PORT = 8080

# ソケットの設定
class ReusableHTTPServer(HTTPServer):
    def __init__(self, server_address, RequestHandlerClass):
        super().__init__(server_address, RequestHandlerClass)
        self.allow_reuse_address = True

# サーバーを起動する関数
def run_server():
    httpd = ReusableHTTPServer((HOST, PORT), SimpleHTTPRequestHandler)
    print(f"サーバーが {HOST}:{PORT} で起動しました。")
    httpd.serve_forever()

# Ctrl-Cを捕捉してサーバーを終了するための関数
def signal_handler(sig, frame):
    print("サーバーを終了します...")
    os._exit(0)

# メイン処理
if __name__ == "__main__":
    # Ctrl-Cのシグナルを捕捉
    signal.signal(signal.SIGINT, signal_handler)

    # サーバーを別スレッドで起動
    server_thread = threading.Thread(target=run_server)
    server_thread.start()

    # ブラウザを自動で開く
    webbrowser.open(f'http://{HOST}:{PORT}')

    # サーバーが終了するまでメインスレッドを待機
    server_thread.join()