Reputation: 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")
I got an error: signal only works in main thread of the main interpreter.
It works nicely while running in a standalone Python file but not inside Django.
I got a runtime error This event loop is already running.
while using
async def generate_training_pdf(request):
asyncio.get_event_loop().run_until_complete(main())
Upvotes: 0
Views: 86
Reputation: 11
In my case I added some adjusments to avoid "signal" errors. Here is an example what I used to handle that.
async def lunch_browser(self):
return await launch(
# to avoid signal error
handleSIGINT=False,
handleSIGTERM=False,
handleSIGHUP=False,
ignoreHTTPSErrors=True,
)
Upvotes: 1