mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-17 01:56:46 +00:00
73 lines
2.4 KiB
TypeScript
73 lines
2.4 KiB
TypeScript
import { z } from 'zod';
|
|
|
|
import { Config, Env } from '../decorators';
|
|
|
|
const runnerModeSchema = z.enum(['internal', 'external']);
|
|
|
|
export type TaskRunnerMode = z.infer<typeof runnerModeSchema>;
|
|
|
|
@Config
|
|
export class TaskRunnersConfig {
|
|
@Env('N8N_RUNNERS_ENABLED')
|
|
enabled: boolean = false;
|
|
|
|
/**
|
|
* Whether the task runner should run as a child process spawned by n8n (internal mode)
|
|
* or as a separate process launched outside n8n (external mode).
|
|
*/
|
|
@Env('N8N_RUNNERS_MODE', runnerModeSchema)
|
|
mode: TaskRunnerMode = 'internal';
|
|
|
|
/** Endpoint which task runners connect to */
|
|
@Env('N8N_RUNNERS_PATH')
|
|
path: string = '/runners';
|
|
|
|
@Env('N8N_RUNNERS_AUTH_TOKEN')
|
|
authToken: string = '';
|
|
|
|
/** IP address task runners broker should listen on */
|
|
@Env('N8N_RUNNERS_BROKER_PORT')
|
|
port: number = 5679;
|
|
|
|
/** IP address task runners broker should listen on */
|
|
@Env('N8N_RUNNERS_BROKER_LISTEN_ADDRESS')
|
|
listenAddress: string = '127.0.0.1';
|
|
|
|
/** Maximum size of a payload sent to the runner in bytes, Default 1G */
|
|
@Env('N8N_RUNNERS_MAX_PAYLOAD')
|
|
maxPayload: number = 1024 * 1024 * 1024;
|
|
|
|
/** The --max-old-space-size option to use for the runner (in MB). Default means node.js will determine it based on the available memory. */
|
|
@Env('N8N_RUNNERS_MAX_OLD_SPACE_SIZE')
|
|
maxOldSpaceSize: string = '';
|
|
|
|
/**
|
|
* How many concurrent tasks can a runner execute at a time
|
|
*
|
|
* Kept high for backwards compatibility - n8n v2 will reduce this to `5`
|
|
*/
|
|
@Env('N8N_RUNNERS_MAX_CONCURRENCY')
|
|
maxConcurrency: number = 10;
|
|
|
|
/**
|
|
* How long (in seconds) a task is allowed to take for completion, else the
|
|
* task will be aborted. (In internal mode, the runner will also be
|
|
* restarted.) Must be greater than 0.
|
|
*
|
|
* Kept high for backwards compatibility - n8n v2 will reduce this to `60`
|
|
*/
|
|
@Env('N8N_RUNNERS_TASK_TIMEOUT')
|
|
taskTimeout: number = 300; // 5 minutes
|
|
|
|
/** How often (in seconds) the runner must send a heartbeat to the broker, else the task will be aborted. (In internal mode, the runner will also be restarted.) Must be greater than 0. */
|
|
@Env('N8N_RUNNERS_HEARTBEAT_INTERVAL')
|
|
heartbeatInterval: number = 30;
|
|
|
|
/**
|
|
* Whether to disable all security measures in the task runner. **Discouraged for production use.**
|
|
* Set to `true` for compatibility with modules that rely on insecure JS features.
|
|
*/
|
|
@Env('N8N_RUNNERS_INSECURE_MODE')
|
|
insecureMode: boolean = false;
|
|
}
|