mirror of
https://github.com/penpot/penpot.git
synced 2026-11-09 19:41:34 +00:00
The worker side of the exporter gets its config: `PENPOT_EXPORTER_ROLES` (`http` by default, `http,worker` during the transition) and `PENPOT_EXPORTER_WORKER_CONCURRENCY` (K pollers, the concurrency of the process, floored at one), both read from the live config, never at import time; every accessor is a plain function so the tests do not journey through globals. The queue key it polls is `penpot.worker.queue:<tenant>:exporter`, the same one the dispatcher pushes. The management client (`app.consumer.api`) is the only place of the worker that speaks HTTP: claim, progress, session, complete and fail, all POSTs with `X-Shared-Key: exporter <key>`, transit+json bodies and transit answers. The artifact form of `complete-job` rides multipart (the undici FormData the uploads already use); a non-200 answer arrives as the failure of the call, carrying the status and the error body. AI-assisted-by: glm-5.3-flash