When I use aiohttp.web.run_app(. . ., port=0)
, I assume that it selects an arbitrary available port on which to serve. Is this correct? And if so, is there some way to figure out what port it's selected?
You use server.sockets
as in the following code:
@asyncio.coroutine
def status(request):
"""Check that the app is properly working"""
return web.json_response('OK')
app = web.Application() # pylint: disable=invalid-name
app.router.add_get('/api/status', status)
def main():
"""Starts the aiohttp process to serve the REST API"""
loop = asyncio.get_event_loop()
# continue server bootstraping
handler = app.make_handler()
coroutine = loop.create_server(handler, '0.0.0.0', 0)
server = loop.run_until_complete(coroutine)
print('Serving on http://%s:%s' % server.sockets[0].getsockname()) # HERE!
try:
loop.run_forever()
except KeyboardInterrupt:
pass
finally:
server.close()
loop.run_until_complete(server.wait_closed())
loop.run_until_complete(handler.finish_connections(1.0))
loop.close()
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With