DinoPLayZ commited on
Commit
4e496ac
·
verified ·
1 Parent(s): 01b2b42

Update main.py

Browse files
Files changed (1) hide show
  1. main.py +16 -2
main.py CHANGED
@@ -27,6 +27,13 @@ import sys
27
  # ==============================================================================
28
  # LOGGING (Task 5)
29
  # ==============================================================================
 
 
 
 
 
 
 
30
  IST = timezone(timedelta(hours=5, minutes=30))
31
  logging.Formatter.converter = lambda *args: datetime.fromtimestamp(args[-1], tz=IST).timetuple()
32
 
@@ -35,6 +42,7 @@ class PrintHandler(logging.Handler):
35
  try:
36
  msg = self.format(record)
37
  print(msg, flush=True)
 
38
  except Exception:
39
  self.handleError(record)
40
 
@@ -58,7 +66,13 @@ root_logger.addHandler(stdout_handler)
58
 
59
  logger = logging.getLogger(__name__)
60
 
61
- # Suppress Uvicorn's default access logs (spammy) but let our root logger handle everything
 
 
 
 
 
 
62
  logging.getLogger("uvicorn.access").setLevel(logging.WARNING)
63
 
64
  # ==============================================================================
@@ -689,7 +703,7 @@ def start_loop():
689
  FAST_MODE_UNTIL = 0
690
  time.sleep(sleep_seconds)
691
  continue
692
- print("TICK EXECUTED", flush=True)
693
  process_tick()
694
 
695
  # Polling loop: Wait in exact intervals without stacking HTTP request delays
 
27
  # ==============================================================================
28
  # LOGGING (Task 5)
29
  # ==============================================================================
30
+ # Force line buffering for standard output to guarantee HF Spaces captures it
31
+ try:
32
+ sys.stdout.reconfigure(line_buffering=True)
33
+ sys.stderr.reconfigure(line_buffering=True)
34
+ except AttributeError:
35
+ pass # Python < 3.7 fallback
36
+
37
  IST = timezone(timedelta(hours=5, minutes=30))
38
  logging.Formatter.converter = lambda *args: datetime.fromtimestamp(args[-1], tz=IST).timetuple()
39
 
 
42
  try:
43
  msg = self.format(record)
44
  print(msg, flush=True)
45
+ sys.stdout.flush()
46
  except Exception:
47
  self.handleError(record)
48
 
 
66
 
67
  logger = logging.getLogger(__name__)
68
 
69
+ # Force Uvicorn and FastAPI to use our root logger
70
+ for log_name in ("uvicorn", "uvicorn.error", "uvicorn.access", "fastapi"):
71
+ l = logging.getLogger(log_name)
72
+ l.handlers = []
73
+ l.propagate = True
74
+
75
+ # Suppress Uvicorn's default access logs (spammy)
76
  logging.getLogger("uvicorn.access").setLevel(logging.WARNING)
77
 
78
  # ==============================================================================
 
703
  FAST_MODE_UNTIL = 0
704
  time.sleep(sleep_seconds)
705
  continue
706
+
707
  process_tick()
708
 
709
  # Polling loop: Wait in exact intervals without stacking HTTP request delays