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()