首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PuppeteerSharp高性能实例数量

PuppeteerSharp高性能实例数量
EN

Stack Overflow用户
提问于 2019-10-14 16:23:56
回答 1查看 1.4K关注 0票数 1

我们使用PuppeteerSharp为用户添加下载我们应用程序的功能。不幸的是,有时会启动大量的Chromium进程,直到服务器重新启动才会停止。

通常,当用户下载pdf时,5个铬进程开始,当下载完成时,这些进程消失。

这是我们的代码:

代码语言:javascript
复制
private static LaunchOptions launchOptions = new LaunchOptions
{
    ExecutablePath = chromepath,
    Headless = true,
    DefaultViewport = ViewPortOptions
};

public static void ExportPdf(string url, string location)
{
    try
    {
        Task<string> task = Task.Run<string>(async () => await ExportPdfASync(url, location)));
        task.Wait();
    }
    catch (Exception)
    {
        // Exception handling
    }
}

public static async Task<string> ExportPdfASync(string url, string location)
{
    using (var browser = await Puppeteer.LaunchAsync(LaunchOptions))
    using (var page = await browser.NewPageAsync())
    {
        await page.SetViewportAsync(new ViewPortOptions() { Width = 1440, Height = 990, IsMobile = false, DeviceScaleFactor = 1.0 });

        await page.SetJavaScriptEnabledAsync(true);
        await page.GoToAsync(url);
        await page.WaitForTimeoutAsync(1500);

        var marginOptions = new MarginOptions()
        {
            Top = "10mm",
            Left = "10mm",
            Right = "10mm",
            Bottom = "10mm"
        };

        var pdfOptions = new PdfOptions()
        {
            PrintBackground = true,
            Format = PaperFormat.A4,
            MarginOptions = marginOptions,
            Landscape = landscape
        };
        await page.PdfAsync(location, pdfOptions);
    }

    return "";
}

浏览器和页面都在using块中,因此,即使出现错误,也应该将它们处理掉。

有谁有解决这个问题的办法吗?我们和我们的服务器将会非常高兴;)

EN

回答 1

Stack Overflow用户

发布于 2020-07-23 19:29:15

试试这个:

代码语言:javascript
复制
public static async Task<string> ExportPdfASync(string url, string location)
{
 try
 {
   using (var browser = await Puppeteer.LaunchAsync(LaunchOptions))
   using (var page = await browser.NewPageAsync())
   {
    await page.SetViewportAsync(new ViewPortOptions() { Width = 1440, Height = 990, IsMobile = false, DeviceScaleFactor = 1.0 });

    await page.SetJavaScriptEnabledAsync(true);
    await page.GoToAsync(url);
    await page.WaitForTimeoutAsync(1500);

    var marginOptions = new MarginOptions()
    {
        Top = "10mm",
        Left = "10mm",
        Right = "10mm",
        Bottom = "10mm"
    };

    var pdfOptions = new PdfOptions()
    {
        PrintBackground = true,
        Format = PaperFormat.A4,
        MarginOptions = marginOptions,
        Landscape = landscape
    };
    await page.PdfAsync(location, pdfOptions);
  }
  }
  catch (Exception ex)
  {
  }
  finally {
    browser.CloseAsync();
    page.CloseAsync();
  }
  return "";
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58372736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档