forked from Shifty/pyserveX
64 lines
1.8 KiB
Python
64 lines
1.8 KiB
Python
import sys
|
|
import argparse
|
|
from pathlib import Path
|
|
|
|
from pyserve import PyServeServer, Config
|
|
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser(description="PyServe - HTTP веб-сервер")
|
|
parser.add_argument(
|
|
"-c", "--config",
|
|
default="config.yaml",
|
|
help="Путь к конфигурационному файлу (по умолчанию: config.yaml)"
|
|
)
|
|
parser.add_argument(
|
|
"--host",
|
|
help="Хост для привязки сервера"
|
|
)
|
|
parser.add_argument(
|
|
"--port",
|
|
type=int,
|
|
help="Порт для привязки сервера"
|
|
)
|
|
parser.add_argument(
|
|
"--debug",
|
|
action="store_true",
|
|
help="Включить отладочный режим"
|
|
)
|
|
|
|
args = parser.parse_args()
|
|
|
|
config_path = args.config
|
|
if not Path(config_path).exists():
|
|
print(f"Конфигурационный файл {config_path} не найден")
|
|
print("Используется конфигурация по умолчанию")
|
|
config = Config()
|
|
else:
|
|
try:
|
|
config = Config.from_yaml(config_path)
|
|
except Exception as e:
|
|
print(f"Ошибка загрузки конфигурации: {e}")
|
|
sys.exit(1)
|
|
|
|
if args.host:
|
|
config.server.host = args.host
|
|
if args.port:
|
|
config.server.port = args.port
|
|
if args.debug:
|
|
config.logging.level = "DEBUG"
|
|
|
|
server = PyServeServer(config)
|
|
|
|
try:
|
|
server.run()
|
|
except KeyboardInterrupt:
|
|
print("\nСервер остановлен пользователем")
|
|
except Exception as e:
|
|
print(f"Ошибка запуска сервера: {e}")
|
|
sys.exit(1)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|