Skip to content

Commit 9e8df0c

Browse files
bobbybobby
authored andcommitted
fix: Add console output for startup messages
- Print startup messages to both console and log file - Show worker count auto-detection in terminal - Display worker startup progress in real-time - Print shutdown messages during graceful stop - Fix issue where service appeared to hang with no output This ensures users can see the startup progress in terminal instead of only writing to log files. Made-with: Cursor
1 parent 0264a2a commit 9e8df0c

1 file changed

Lines changed: 47 additions & 18 deletions

File tree

  • packages/simunet/src/netdriver_simunet

packages/simunet/src/netdriver_simunet/main.py

Lines changed: 47 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -321,22 +321,31 @@ def start():
321321
# Auto-detect: CPU cores - 2, minimum 1
322322
cpu_count = os.cpu_count() or 1
323323
num_workers = max(1, cpu_count - 2)
324-
log.info(f"Auto-detected {cpu_count} CPU cores, using {num_workers} workers")
324+
auto_msg = f"Auto-detected {cpu_count} CPU cores, using {num_workers} workers"
325+
print(auto_msg)
326+
log.info(auto_msg)
325327

326328
# Get total devices, limit worker count to not exceed device count
327329
all_devices = container.config()["devices"]
328330
total_devices = len(all_devices)
329331
if num_workers > total_devices:
330-
log.warning(f"Worker count ({num_workers}) exceeds device count ({total_devices}), "
331-
f"adjusting to {total_devices} workers")
332+
adjust_msg = (f"Worker count ({num_workers}) exceeds device count ({total_devices}), "
333+
f"adjusting to {total_devices} workers")
334+
print(adjust_msg)
335+
log.warning(adjust_msg)
332336
num_workers = total_devices
333337

334338
if num_workers > 1:
335339
# Multi-worker mode: auto-start multiple processes
336-
log.info("=" * 60)
337-
log.info(f"Starting Simunet with {num_workers} workers (multi-process mode)")
338-
log.info(f"Note: Auto-reload is disabled in multi-worker mode")
339-
log.info("=" * 60)
340+
startup_msg = [
341+
"=" * 60,
342+
f"Starting Simunet with {num_workers} workers (multi-process mode)",
343+
f"Note: Auto-reload is disabled in multi-worker mode",
344+
"=" * 60
345+
]
346+
for msg in startup_msg:
347+
print(msg)
348+
log.info(msg)
340349

341350
# Create and start multiple processes
342351
processes = []
@@ -347,36 +356,56 @@ def start():
347356
name=f"simunet-worker-{worker_id}"
348357
)
349358
p.start()
350-
log.info(f"✓ Worker {worker_id}/{num_workers} started (PID: {p.pid})")
359+
worker_msg = f"✓ Worker {worker_id}/{num_workers} started (PID: {p.pid})"
360+
print(worker_msg)
361+
log.info(worker_msg)
351362
processes.append(p)
352363

353-
log.info("=" * 60)
354-
log.info("All workers started successfully!")
355-
log.info(f"Press Ctrl+C to stop all workers")
356-
log.info("=" * 60)
364+
completion_msg = [
365+
"=" * 60,
366+
"All workers started successfully!",
367+
f"Press Ctrl+C to stop all workers",
368+
"=" * 60
369+
]
370+
for msg in completion_msg:
371+
print(msg)
372+
log.info(msg)
357373

358374
# Wait for all processes
359375
try:
360376
for p in processes:
361377
p.join()
362378
except KeyboardInterrupt:
363-
log.info("\n" + "=" * 60)
364-
log.info("Stopping all workers...")
365-
log.info("=" * 60)
379+
shutdown_msg = [
380+
"\n" + "=" * 60,
381+
"Stopping all workers...",
382+
"=" * 60
383+
]
384+
for msg in shutdown_msg:
385+
print(msg)
386+
log.info(msg)
387+
366388
for p in processes:
367389
p.terminate()
368390
for p in processes:
369391
p.join()
370-
log.info("✓ All workers stopped")
392+
393+
stop_msg = "✓ All workers stopped"
394+
print(stop_msg)
395+
log.info(stop_msg)
371396
else:
372397
# Single-worker mode: start all devices
373-
log.info("Starting in single-worker mode (all devices)")
398+
startup_msg = f"Starting in single-worker mode (all {total_devices} devices)"
399+
print(startup_msg)
400+
log.info(startup_msg)
374401

375402
# Handle reload flag
376403
reload = args.reload and not args.no_reload
377404

378405
if reload:
379-
log.info("Auto-reload is enabled for development")
406+
reload_msg = "Auto-reload is enabled for development"
407+
print(reload_msg)
408+
log.info(reload_msg)
380409

381410
uvicorn.run(
382411
"netdriver_simunet.main:app",

0 commit comments

Comments
 (0)