@@ -30,7 +30,7 @@ class IngestResponse:
3030
3131
3232class TransmitError (Exception ):
33- """Raised for retryable errors (429 / 5xx / network)."""
33+ """Raised for retryable errors (429 / 5xx / network / unexpected status )."""
3434
3535
3636class Transmitter :
@@ -78,8 +78,7 @@ def send(self, batch: dict) -> IngestResponse:
7878 server_time = data .get ("server_time" ),
7979 rejected = data .get ("rejected" ),
8080 )
81-
82- if status_code == 400 :
81+ elif status_code == 400 :
8382 logger .warning (
8483 "wildedge: batch rejected (400) - discarding: %s" ,
8584 raw [: constants .ERROR_MSG_MAX_LEN ],
@@ -90,17 +89,15 @@ def send(self, batch: dict) -> IngestResponse:
9089 events_accepted = 0 ,
9190 events_rejected = len (batch .get ("events" , [])),
9291 )
93-
94- if status_code == 401 :
92+ elif status_code == 401 :
9593 logger .error ("wildedge: authentication failed (401) - check your API key" )
9694 return IngestResponse (
9795 status = "unauthorized" ,
9896 batch_id = batch .get ("batch_id" , "" ),
9997 events_accepted = 0 ,
10098 events_rejected = len (batch .get ("events" , [])),
10199 )
102-
103- if 300 <= status_code < 400 :
100+ elif 300 <= status_code < 400 :
104101 # Redirects should never occur (we disable redirect following).
105102 # Treat as a permanent config error so we don't loop.
106103 logger .error (
@@ -114,8 +111,7 @@ def send(self, batch: dict) -> IngestResponse:
114111 events_accepted = 0 ,
115112 events_rejected = len (batch .get ("events" , [])),
116113 )
117-
118- if status_code == 404 :
114+ elif status_code == 404 :
119115 logger .error (
120116 "wildedge: endpoint not found (404) at %s; check WILDEDGE_DSN" , url
121117 )
@@ -125,13 +121,11 @@ def send(self, batch: dict) -> IngestResponse:
125121 events_accepted = 0 ,
126122 events_rejected = len (batch .get ("events" , [])),
127123 )
128-
129- if status_code == 429 or status_code >= 500 :
124+ elif status_code == 429 or status_code >= 500 :
130125 raise TransmitError (
131126 f"HTTP { status_code } : { raw [: constants .ERROR_MSG_MAX_LEN ]!r} "
132127 )
133-
134- if 400 <= status_code < 500 :
128+ elif 400 <= status_code < 500 :
135129 # Other 4xx (e.g. 422 Unprocessable) are permanent client errors; discard.
136130 logger .warning (
137131 "wildedge: batch rejected (%d) - discarding: %s" ,
@@ -144,6 +138,11 @@ def send(self, batch: dict) -> IngestResponse:
144138 events_accepted = 0 ,
145139 events_rejected = len (batch .get ("events" , [])),
146140 )
141+ else :
142+ # Guard against unexpected status codes that would otherwise return None.
143+ raise TransmitError (
144+ f"Unexpected HTTP { status_code } : { raw [: constants .ERROR_MSG_MAX_LEN ]!r} "
145+ )
147146
148147 def close (self ) -> None :
149148 pass
0 commit comments