sagarmounika
Updating values in loop and generate Puppeteer Pdf in loop without timeout error
Hi,
I have a list, where I have to generate a pdf for each value in the list and keep track of which pdf is getting generated to display on UI (using socket assign).
I have two issues:
-
It’s working fine for some time but after some time page is reloading and giving this error
received timeout while communicating with server. Falling back to hard refresh for recovery
while pdfs are getting generated in the background.
It works fine when I remove PuppeteerPdf.Generate code -
I am unable to update the value (current_pdf) in the loop.
for x <- results.fetch_data do
handle_single_item(x,socket)
end
def handle_single_item(value,socket)do
// fetch_kyc is another async fn.
result= Task.async(fn ->fetch_kyc(value,socket) end)
awaited_result = Task.await(result, :infinity)
//print_pdf fn is to generate pdfs
pdf_result = Task.async(fn -> print_pdf(socket, awaited_result) end )
Task.await(pdf_result, :infinity)
{: ok, socket}
end
def print_pdf(socket,result)do
html = Task.async(fn -> Phoenix.View.render_to_string(
CrmUpdatedWeb.HomeView,
"template.html", formdata: result, socket: socket
) end)
awaited_html = Task.await(html, :infinity)
name = :rand.uniform(256)
socket= assign(socket, :current_pdf, name)
// Using PuppeteerPdf to generate pdf
result= PuppeteerPdf.Generate.from_string(awaited_html, "../RANDOM#{name}.pdf", [print_background: true,
timeout: 20000
] )
{: no reply, socket}
end
Thanks.
Most Liked
Hermanverschooten
What are you doing with the PDF’s that are generated? Sending them to the browser or to disk?
I have setup something similar last week. Although I did it by adding an iframe to the page and settings its src to a regular controller action that generates the PDF. That controller action while it is generating uses PubSub to report progress to the page, once the generation is complete the zip-file with all pdfs is downloaded by the browser.
Popular in Questions
Other popular topics
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #phoenix_html
- #iex
- #blog-post
- #graphql
- #genstage
- #ai
- #websockets
- #supervisor
- #advent-of-code
- #elixirconf-us
- #distillery
- #processes
- #forms
- #api
- #metaprogramming
- #security
- #performance









