Exception while generating pdf
Spawn opened this issue · comments
Traceback (most recent call last):
File "/usr/lib/python3.6/threading.py", line 916, in _bootstrap_inner
self.run()
File "/home/bogdan/Projects/inkit_microservices/services/pdf-renderer/service/consumer.py", line 19, in run
PDFRenderer(self.campaign_id)
File "/home/bogdan/Projects/inkit_microservices/services/pdf-renderer/service/renderer.py", line 58, in __init__
self.ioloop.run_until_complete(self.process_contacts())
File "/usr/lib/python3.6/asyncio/base_events.py", line 468, in run_until_complete
return future.result()
File "/home/bogdan/Projects/inkit_microservices/services/pdf-renderer/service/renderer.py", line 67, in process_contacts
await asyncio.gather(*tasks)
File "/home/bogdan/Projects/inkit_microservices/services/pdf-renderer/service/renderer.py", line 100, in render_pdf
front_pdf = await self.apydf.generate_pdf(front_html)
File "/home/bogdan/Projects/inkit_microservices/services/pdf-renderer/.env/lib/python3.6/site-packages/pydf/wkhtmltopdf.py", line 65, in generate_pdf
loop=self.loop
File "/usr/lib/python3.6/asyncio/subprocess.py", line 225, in create_subprocess_exec
stderr=stderr, **kwds)
File "/usr/lib/python3.6/asyncio/base_events.py", line 1194, in subprocess_exec
bufsize, **kwargs)
File "/usr/lib/python3.6/asyncio/unix_events.py", line 203, in _make_subprocess_transport
self._child_watcher_callback, transp)
File "/usr/lib/python3.6/asyncio/unix_events.py", line 867, in add_child_handler
"Cannot add child handler, "
RuntimeError: Cannot add child handler, the child watcher does not have a loop attached
Python3.6
code:
apydf = AsyncPydf()
pdf = await apydf.generate_pdf(html)
I'm running each pdf processing in separate thread. Each thread has personal ioloop. So maybe problem in this.
You shouldn't run it in separate threads, the generate_pdf
coroutine takes care of running each pdf generation in a separate process.
Better to use asyncio.gather
or similar.
This looks to me like a limitation (or misuse) of asyncio, not pydf.