mirror of
https://github.com/home-assistant/core.git
synced 2025-07-22 20:57:21 +00:00
Use aiohttp web.AppRunner (#16020)
* Use aiohttp web.AppRunner * Stop site
This commit is contained in:
parent
994e2b6624
commit
121abb450a
@ -232,7 +232,8 @@ class HomeAssistantHTTP:
|
|||||||
self.is_ban_enabled = is_ban_enabled
|
self.is_ban_enabled = is_ban_enabled
|
||||||
self.ssl_profile = ssl_profile
|
self.ssl_profile = ssl_profile
|
||||||
self._handler = None
|
self._handler = None
|
||||||
self.server = None
|
self.runner = None
|
||||||
|
self.site = None
|
||||||
|
|
||||||
def register_view(self, view):
|
def register_view(self, view):
|
||||||
"""Register a view with the WSGI server.
|
"""Register a view with the WSGI server.
|
||||||
@ -308,7 +309,7 @@ class HomeAssistantHTTP:
|
|||||||
self.app.router.add_route('GET', url_pattern, serve_file)
|
self.app.router.add_route('GET', url_pattern, serve_file)
|
||||||
|
|
||||||
async def start(self):
|
async def start(self):
|
||||||
"""Start the WSGI server."""
|
"""Start the aiohttp server."""
|
||||||
# We misunderstood the startup signal. You're not allowed to change
|
# We misunderstood the startup signal. You're not allowed to change
|
||||||
# anything during startup. Temp workaround.
|
# anything during startup. Temp workaround.
|
||||||
# pylint: disable=protected-access
|
# pylint: disable=protected-access
|
||||||
@ -321,7 +322,9 @@ class HomeAssistantHTTP:
|
|||||||
context = ssl_util.server_context_intermediate()
|
context = ssl_util.server_context_intermediate()
|
||||||
else:
|
else:
|
||||||
context = ssl_util.server_context_modern()
|
context = ssl_util.server_context_modern()
|
||||||
context.load_cert_chain(self.ssl_certificate, self.ssl_key)
|
await self.hass.async_add_executor_job(
|
||||||
|
context.load_cert_chain, self.ssl_certificate,
|
||||||
|
self.ssl_key)
|
||||||
except OSError as error:
|
except OSError as error:
|
||||||
_LOGGER.error("Could not read SSL certificate from %s: %s",
|
_LOGGER.error("Could not read SSL certificate from %s: %s",
|
||||||
self.ssl_certificate, error)
|
self.ssl_certificate, error)
|
||||||
@ -329,7 +332,9 @@ class HomeAssistantHTTP:
|
|||||||
|
|
||||||
if self.ssl_peer_certificate:
|
if self.ssl_peer_certificate:
|
||||||
context.verify_mode = ssl.CERT_REQUIRED
|
context.verify_mode = ssl.CERT_REQUIRED
|
||||||
context.load_verify_locations(cafile=self.ssl_peer_certificate)
|
await self.hass.async_add_executor_job(
|
||||||
|
context.load_verify_locations,
|
||||||
|
self.ssl_peer_certificate)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
context = None
|
context = None
|
||||||
@ -340,21 +345,17 @@ class HomeAssistantHTTP:
|
|||||||
# To work around this we now prevent the router from getting frozen
|
# To work around this we now prevent the router from getting frozen
|
||||||
self.app._router.freeze = lambda: None
|
self.app._router.freeze = lambda: None
|
||||||
|
|
||||||
self._handler = self.app.make_handler(loop=self.hass.loop)
|
self.runner = web.AppRunner(self.app)
|
||||||
|
await self.runner.setup()
|
||||||
|
self.site = web.TCPSite(self.runner, self.server_host,
|
||||||
|
self.server_port, ssl_context=context)
|
||||||
try:
|
try:
|
||||||
self.server = await self.hass.loop.create_server(
|
await self.site.start()
|
||||||
self._handler, self.server_host, self.server_port, ssl=context)
|
|
||||||
except OSError as error:
|
except OSError as error:
|
||||||
_LOGGER.error("Failed to create HTTP server at port %d: %s",
|
_LOGGER.error("Failed to create HTTP server at port %d: %s",
|
||||||
self.server_port, error)
|
self.server_port, error)
|
||||||
|
|
||||||
async def stop(self):
|
async def stop(self):
|
||||||
"""Stop the WSGI server."""
|
"""Stop the aiohttp server."""
|
||||||
if self.server:
|
await self.site.stop()
|
||||||
self.server.close()
|
await self.runner.cleanup()
|
||||||
await self.server.wait_closed()
|
|
||||||
await self.app.shutdown()
|
|
||||||
if self._handler:
|
|
||||||
await self._handler.shutdown(10)
|
|
||||||
await self.app.cleanup()
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user