如何在 Django 中使用 pyppeteer 生成 PDF?得到的错误信号仅在主解释器的主线程中起作用

问题描述 投票:0回答:1

#urls.py

path('pdf/',
         views.generate_pdf),

#views.py

from pyppeteer import launch
import os
import asyncio

async def main():
    browser = await launch()
    page = await browser.newPage()
    await page.goto("https://python.org")
    await page.waitFor(1000)
    await page.pdf({"path": "python.pdf"})
    await browser.close()


async def generate_pdf(request):
    print("Starting...")
    await main()
    print("PDF has been taken")
    return HttpResponse("PDF has been generated")

我收到错误:信号仅在主解释器的主线程中起作用。

在独立的 Python 文件中运行时效果很好,但在 Django 中则不然。

我收到运行时错误此事件循环已在运行。

使用时

async def generate_training_pdf(request):
    asyncio.get_event_loop().run_until_complete(main())
django pyppeteer
1个回答
0
投票

试试这个

async def lunch_browser(self):
    return await launch(
        # to avoid signal error
        autoClose= False,
        handleSIGINT=False,
        handleSIGTERM=False,
        handleSIGHUP=False,
        ignoreHTTPSErrors=True,
        defaultViewport={'width': 1020, 'height': 600}
    )
© www.soinside.com 2019 - 2024. All rights reserved.