PuppeteerSharp Количество экземпляров хрома - PullRequest
0 голосов
/ 14 октября 2019

Мы используем PuppeteerSharp, чтобы добавить пользователям возможность загружать PDF нашего приложения. К сожалению, иногда запускается огромное количество процессов Chromium, которые не останавливаются до перезапуска сервера.

Обычно, когда пользователь загружает PDF, запускается 5 процессов хрома, которые исчезают, когда загрузка заканчивается.

Это наш код:

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 "";
}

Браузер и страница находятся в использовании блоков, поэтому, даже с ошибкой, они должны быть удалены.

У кого-нибудь есть решение этой проблемы? Мы и наши серверы были бы очень рады;)

enter image description here

...