stop playwright when finish

This commit is contained in:
felinae98 2022-01-03 13:54:31 +08:00
parent 4aeff4ad95
commit fcb12b93ef
No known key found for this signature in database
GPG Key ID: 00C8B010587FF610

@ -12,7 +12,7 @@ import nonebot
from nonebot.adapters.cqhttp.message import MessageSegment
from nonebot.log import logger
from playwright._impl._driver import compute_driver_executable
from playwright.async_api import Browser, Page, async_playwright
from playwright.async_api import Browser, Page, async_playwright, Playwright
from .plugin_config import plugin_config
@ -40,8 +40,7 @@ class Render(metaclass=Singleton):
self.interval_log = ''
self.remote_browser = False
async def get_browser(self) -> Browser:
playwright = await async_playwright().start()
async def get_browser(self, playwright: Playwright) -> Browser:
if plugin_config.bison_browser:
if plugin_config.bison_browser.startswith('local:'):
path = plugin_config.bison_browser.split('local:', 1)[1]
@ -81,7 +80,8 @@ class Render(metaclass=Singleton):
async def do_render(self, url: str, viewport: Optional[dict] = None, target: Optional[str] = None,
operation: Optional[Callable[[Page], Awaitable[None]]] = None) -> Optional[bytes]:
async with self.lock:
self.browser = await self.get_browser()
async with async_playwright() as playwright:
self.browser = await self.get_browser(playwright)
self._inter_log('open browser')
if viewport:
constext = await self.browser.new_context(