Comments (3)
Not sure if it'll help though, it sounds a bit like you have a more general issue with your CI setup? Are you just trying to print a whole lot of PDFs in parallel? If so, increasing the number of sessions to spawn would probably help.
This did help actually, thanks! Also, I've removed async: true
from the tests that use ChromicPDF, which results in having more cpu available when the tests run.
In the end, ChromicPDF's session pool was never designed to function as a queue. In other words: If you want to print 6 PDFs in parallel with 5 workers, it by design should error on the 6th PDF (minus the allowed 5s checkout timeout). If you want to queue work up, you need to add a queue (e.g. Oban). The sole purpose of the pool is to provide (bounded) parallelism.
Makes sense!
Or another idea: Spawn a chromic process in the test (ExUnit's start_supervised) and inject the chromic instance to use into the test unit (via process dict, for instance). That way you would simply start another browser for each test that wants to print a PDF.
I'll keep this in mind if the problem pop-ups again. Thanks!
from chromic_pdf.
Guess you can give it a try 🤷
Not sure if it'll help though, it sounds a bit like you have a more general issue with your CI setup? Are you just trying to print a whole lot of PDFs in parallel? If so, increasing the number of sessions to spawn would probably help. Or maybe add a work queue and simply assert that a print job has been added?
In the end, ChromicPDF's session pool was never designed to function as a queue. In other words: If you want to print 6 PDFs in parallel with 5 workers, it by design should error on the 6th PDF (minus the allowed 5s checkout timeout). If you want to queue work up, you need to add a queue (e.g. Oban). The sole purpose of the pool is to provide (bounded) parallelism.
from chromic_pdf.
Or another idea: Spawn a chromic process in the test (ExUnit's start_supervised
) and inject the chromic instance to use into the test unit (via process dict, for instance). That way you would simply start another browser for each test that wants to print a PDF.
from chromic_pdf.
Related Issues (20)
- on_demand implementation sends exit signal to caller HOT 15
- GPU renderer on a headless server? HOT 2
- Timeouts on prod HOT 11
- Exception at startup on Gigalixir HOT 2
- Chromium on a different machine in the network HOT 9
- Ability to pass URL as the template source? HOT 1
- Ability to call `Emulation.setScriptExecutionDisabled` on a per-page basis? HOT 3
- Is it possible to use the service name instead of an ip address when use chrome_address? HOT 1
- Inspector.targetCrashed received when `no_sandbox: true` on Chromium 115 on Linux HOT 7
- Make checkout timeout configurable
- Changelog dates are wrong HOT 1
- websocket_debugger_url failing on windows erlang26/elixir15.7 HOT 2
- Footer is not displayed anymore with recent Chromiums HOT 23
- Troublesome PNG images? HOT 2
- Printing PDF crashes instantly before timeout HOT 13
- Loading external files fails when printing from in-memory HTML HOT 2
- Thoughts regarding executing ghostscript with stderr_to_stdout: true? HOT 8
- Will this work with msEdge and Google Chrome for Testing? HOT 5
- Remote Chrome print_to_pdf fails when using Templete HOT 3
- Define screen width when using `capture_screenshot/2` HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from chromic_pdf.