You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
29 lines
924 B
29 lines
924 B
import uvicorn
|
|
import socket
|
|
from urllib.request import urlopen
|
|
from urllib.error import URLError
|
|
|
|
|
|
def port_is_busy(host="127.0.0.1", port=8000):
|
|
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as connection:
|
|
connection.settimeout(1)
|
|
return connection.connect_ex((host, port)) == 0
|
|
|
|
|
|
def quiz_is_running():
|
|
try:
|
|
with urlopen("http://127.0.0.1:8000/", timeout=2) as response:
|
|
return response.status == 200
|
|
except (OSError, URLError):
|
|
return False
|
|
|
|
if __name__ == "__main__":
|
|
if port_is_busy():
|
|
if quiz_is_running():
|
|
print("Приложение уже запущено: http://localhost:8000/")
|
|
else:
|
|
print("Порт 8000 занят другим процессом. Освободите порт и повторите запуск.")
|
|
raise SystemExit(0)
|
|
|
|
uvicorn.run("main:app", host="0.0.0.0", port=8000)
|