Worker environment
The worker runs the generation outside the web request. It needs the message routed to an asynchronous transport, bounded outbound HTTP calls, and the rendering binaries.
Messenger routing
Job submission dispatches a
Netresearch\. Route
it to an asynchronous transport (the doctrine transport in the dev setup) so the
HTTP request that created the job returns immediately and the
worker does the long-running work:
use Netresearch\NrRepurpose\Queue\Message\GenerateArtifactsMessage;
$GLOBALS['TYPO3_CONF_VARS']['SYS']['messenger']['routing'][GenerateArtifactsMessage::class] = 'doctrine';
$GLOBALS['TYPO3_CONF_VARS']['SYS']['messenger']['routing']['*'] = 'default';
Note
TYPO3 v14.3 Core has no retry/failure transport. The message handler therefore catches a hard failure, marks the job failed, and does not rethrow — otherwise the message would be lost with no record. See ADR-001: Asynchronous Generation via Symfony Messenger.
HTTP timeouts
The generator worker makes outbound calls to the configured AI providers
(script, TTS, image) and fetches source URLs. TYPO3's shared Guzzle client
defaults to timeout = 0 (no read timeout), so a stalled provider response
would hang the worker. Bound it:
$GLOBALS['TYPO3_CONF_VARS']['HTTP']['timeout'] = 300;
$GLOBALS['TYPO3_CONF_VARS']['HTTP']['connect_timeout'] = 15;
Since nr-llm 0. the specialized image/TTS calls carry their own
per-request timeout (image default 300 s), so a long-running image generation
is not cut off by a shorter global value; the global timeout still governs the
chat calls and source-URL fetches.
Renderer environment
The HTML-to-PNG renderer shells out to node running the bundled
render., which launches Chromium. node, ffmpeg and ffprobe
are expected on PATH; these defaults are baked into the service
definitions and need no scalars in a standard install.
The renderer passes the Chromium path to render. itself, in the child
process's CHROMIUM_ variable. The path is the $chromium
argument of
Netresearch\, default
/usr/. The worker does not need to export CHROMIUM_.
For a Chromium binary at another path, set the argument in your site's
Services.:
Netresearch\NrRepurpose\Rendering\PlaywrightHtmlToImageRenderer:
arguments:
$chromiumPath: '/usr/lib/chromium/chromium'