@@ -209,43 +209,66 @@ async def serve(self, sockets=None):
209
209
try :
210
210
# Try the newer location first (uvicorn >= 0.18.0)
211
211
from uvicorn .lifespan .on import LifespanOn
212
+ # LifespanOn doesn't accept logger parameter
212
213
self .lifespan = LifespanOn (
213
214
self .config .app ,
214
- self .config .lifespan_on if hasattr (self .config , "lifespan_on" ) else "auto" ,
215
- logger = logger
215
+ self .config .lifespan_on if hasattr (self .config , "lifespan_on" ) else "auto"
216
216
)
217
217
logger .info ("Using LifespanOn from uvicorn.lifespan.on" )
218
218
except (ImportError , AttributeError ) as e :
219
219
logger .debug (f"Failed to import LifespanOn: { str (e )} " )
220
220
try :
221
221
# Try the older location (uvicorn < 0.18.0)
222
222
from uvicorn .lifespan .lifespan import Lifespan
223
- self .lifespan = Lifespan (
224
- self .config .app ,
225
- "auto" ,
226
- logger = logger
227
- )
223
+ try :
224
+ # Try with logger parameter first
225
+ self .lifespan = Lifespan (
226
+ self .config .app ,
227
+ "auto" ,
228
+ logger
229
+ )
230
+ except TypeError :
231
+ # If that fails, try without logger parameter
232
+ self .lifespan = Lifespan (
233
+ self .config .app ,
234
+ "auto"
235
+ )
228
236
logger .info ("Using Lifespan from uvicorn.lifespan.lifespan" )
229
237
except (ImportError , AttributeError ) as e :
230
238
logger .debug (f"Failed to import Lifespan from lifespan.lifespan: { str (e )} " )
231
239
try :
232
240
# Try the oldest location
233
241
from uvicorn .lifespan import Lifespan
234
- self .lifespan = Lifespan (
235
- self .config .app ,
236
- "auto" ,
237
- logger = logger
238
- )
242
+ try :
243
+ # Try with logger parameter first
244
+ self .lifespan = Lifespan (
245
+ self .config .app ,
246
+ "auto" ,
247
+ logger
248
+ )
249
+ except TypeError :
250
+ # If that fails, try without logger parameter
251
+ self .lifespan = Lifespan (
252
+ self .config .app ,
253
+ "auto"
254
+ )
239
255
logger .info ("Using Lifespan from uvicorn.lifespan" )
240
256
except (ImportError , AttributeError ) as e :
241
257
logger .debug (f"Failed to import Lifespan from uvicorn.lifespan: { str (e )} " )
242
258
try :
243
259
# Try the newest location (uvicorn >= 0.21.0)
244
260
from uvicorn .lifespan .state import LifespanState
245
- self .lifespan = LifespanState (
246
- self .config .app ,
247
- logger = logger
248
- )
261
+ try :
262
+ # Try with logger parameter first
263
+ self .lifespan = LifespanState (
264
+ self .config .app ,
265
+ logger = logger
266
+ )
267
+ except TypeError :
268
+ # If that fails, try without logger parameter
269
+ self .lifespan = LifespanState (
270
+ self .config .app
271
+ )
249
272
logger .info ("Using LifespanState from uvicorn.lifespan.state" )
250
273
except (ImportError , AttributeError ) as e :
251
274
logger .debug (f"Failed to import LifespanState: { str (e )} " )
0 commit comments