Previously, it was necessary to support older versions of Python for compatibility. F-strings were released in Python 3.6. Python 3.5 was marked as unsupported by the end of 2020, so now it's possible to start using f-strings safely for better readability and performance.
38 lines
1.1 KiB
Python
38 lines
1.1 KiB
Python
import os
|
|
|
|
|
|
async def handler(prefix, scope, receive, send):
|
|
if scope['type'] == 'lifespan':
|
|
with open(f'{prefix}version', 'w+') as f:
|
|
f.write(
|
|
f"{scope['asgi']['version']} {scope['asgi']['spec_version']}"
|
|
)
|
|
while True:
|
|
message = await receive()
|
|
if message['type'] == 'lifespan.startup':
|
|
os.remove(f'{prefix}startup')
|
|
await send({'type': 'lifespan.startup.complete'})
|
|
elif message['type'] == 'lifespan.shutdown':
|
|
os.remove(f'{prefix}shutdown')
|
|
await send({'type': 'lifespan.shutdown.complete'})
|
|
return
|
|
|
|
if scope['type'] == 'http':
|
|
await send(
|
|
{
|
|
'type': 'http.response.start',
|
|
'status': 204,
|
|
'headers': [
|
|
(b'content-length', b'0'),
|
|
],
|
|
}
|
|
)
|
|
|
|
|
|
async def application(scope, receive, send):
|
|
return await handler('', scope, receive, send)
|
|
|
|
|
|
async def application2(scope, receive, send):
|
|
return await handler('app2_', scope, receive, send)
|