Add runtime checking to create_server to verify that startup has been run (#2328)

This commit is contained in:
Adam Hopkins
2021-12-13 09:36:41 +02:00
committed by GitHub
parent 3d383d7b97
commit 264453459e
5 changed files with 104 additions and 62 deletions

View File

@@ -1,7 +1,5 @@
import asyncio
from signal import SIGINT, signal
import uvloop
from sanic import Sanic, response
@@ -15,17 +13,18 @@ async def test(request):
return response.json({"answer": "42"})
asyncio.set_event_loop(uvloop.new_event_loop())
server = app.create_server(
host="0.0.0.0", port=8000, return_asyncio_server=True
)
loop = asyncio.get_event_loop()
task = asyncio.ensure_future(server)
server = loop.run_until_complete(task)
loop.run_until_complete(server.startup())
signal(SIGINT, lambda s, f: loop.stop())
async def main():
server = await app.create_server(
port=8000, host="0.0.0.0", return_asyncio_server=True
)
try:
loop.run_forever()
finally:
loop.stop()
if server is None:
return
await server.startup()
await server.serve_forever()
if __name__ == "__main__":
asyncio.set_event_loop(uvloop.new_event_loop())
asyncio.run(main())