Skip to content

Commit

Permalink
Merge pull request #1498 from zauberzeug/ip_addresses
Browse files Browse the repository at this point in the history
catch gaierror and improve startup speed
  • Loading branch information
falkoschindler authored Aug 28, 2023
2 parents 915080b + 1ebeec4 commit 507314f
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 5 deletions.
2 changes: 1 addition & 1 deletion nicegui/nicegui.py
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ def handle_startup(with_welcome_message: bool = True) -> None:
background_tasks.create(prune_slot_stacks())
globals.state = globals.State.STARTED
if with_welcome_message:
welcome.print_message()
background_tasks.create(welcome.print_message())
if globals.air:
background_tasks.create(globals.air.connect())

Expand Down
18 changes: 14 additions & 4 deletions nicegui/welcome.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import asyncio
import os
import socket
from typing import List
Expand All @@ -13,7 +14,11 @@

def get_all_ips() -> List[str]:
if 'netifaces' not in globals.optional_features:
return [info[4][0] for info in socket.getaddrinfo(socket.gethostname(), None) if len(info[4]) == 2]
try:
hostname = socket.gethostname()
return socket.gethostbyname_ex(hostname)[2]
except socket.gaierror:
return []
ips = []
for interface in netifaces.interfaces():
try:
Expand All @@ -23,12 +28,17 @@ def get_all_ips() -> List[str]:
return ips


def print_message() -> None:
async def print_message() -> None:
print('NiceGUI ready to go ', end='', flush=True)
host = os.environ['NICEGUI_HOST']
port = os.environ['NICEGUI_PORT']
ips = set(get_all_ips() if host == '0.0.0.0' else [])
loop = asyncio.get_running_loop()
ips = set((await loop.run_in_executor(None, get_all_ips)) if host == '0.0.0.0' else [])
ips.discard('127.0.0.1')
addresses = [(f'http://{ip}:{port}' if port != '80' else f'http://{ip}') for ip in ['localhost'] + sorted(ips)]
if len(addresses) >= 2:
addresses[-1] = 'and ' + addresses[-1]
print(f'NiceGUI ready to go on {", ".join(addresses)}', flush=True)
extra = ''
if 'netifaces' not in globals.optional_features:
extra = ' (install netifaces to show all IPs and speedup this message)'
print(f'on {", ".join(addresses)}' + extra, flush=True)

0 comments on commit 507314f

Please sign in to comment.