给定端口=0时如何确定aiohttp选择哪个端口
How to determine which port aiohttp selects when given port=0
当我使用 aiohttp.web.run_app(. . ., port=0)
时,我假设它选择了一个任意可用端口来提供服务。这个对吗?如果是这样,是否有某种方法可以确定它选择了哪个端口?
您使用 server.sockets
如下代码:
@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()
当我使用 aiohttp.web.run_app(. . ., port=0)
时,我假设它选择了一个任意可用端口来提供服务。这个对吗?如果是这样,是否有某种方法可以确定它选择了哪个端口?
您使用 server.sockets
如下代码:
@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()