Probleme mit dem Python-Code-Node in n8n

Hallo!
Ich bin auf einen Fehler in meinem n8n-Workflow beim Code-Node gestoßen (ich habe Python verwendet):
Error: Task request timed out after 60 seconds at LocalTaskRequester.requestExpired (/usr/local/lib/node_modules/n8n/src/task-runners/task-managers/task-requester.ts:304:17) at LocalTaskRequester.onMessage (/usr/local/lib/node_modules/n8n/src/task-runners/task-managers/task-requester.ts:272:10) at TaskBroker.handleRequestTimeout (/usr/local/lib/node_modules/n8n/src/task-runners/task-broker/task-broker.service.ts:124:50) at Timeout. (/usr/local/lib/node_modules/n8n/src/task-runners/task-broker/task-broker.service.ts:110:9) at listOnTimeout (node:internal/timers:605:17) at processTimers (node:internal/timers:541:7)

Mein Code:

snippet_text = _items[0]["json"]["snippet"]
return [{'json': {'snippet': snippet_text}}]

Ich starte n8n über Docker Compose.
Hier ist meine Docker-Compose-Konfiguration:


services:

  n8n:

    image: n8nio/n8n:latest

    container_name: n8n-main

    restart: always

    environment:

      - N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=false

      - N8N_BLOCK_ENV_ACCESS_IN_NODE=false

      - N8N_HOST=://example.com

      - N8N_PORT=5678

      - WEBHOOK_URL=http://localhost:5678/

      - DB_TYPE=postgresdb

      - DB_POSTGRESDB_HOST=postgres

      - DB_POSTGRESDB_PORT=5432

      - DB_POSTGRESDB_DATABASE=n8n

      - DB_POSTGRESDB_USER=n8n_user

      - DB_POSTGRESDB_PASSWORD=your_postgres_password

      - N8N_RUNNERS_ENABLED=true

      - N8N_RUNNERS_MODE=external

      - N8N_RUNNERS_AUTH_TOKEN=super_secure_token_change_me

      - N8N_RUNNERS_BROKER_PORT=5679

      - N8N_RUNNERS_BROKER_LISTEN_ADDRESS=0.0.0.0

    ports:

      - "5678:5678"

      - "5679:5679"

    volumes:

      - n8n_data:/home/node/.n8n

    depends_on:

      postgres:

        condition: service_healthy



  n8n-runner:

    image: n8nio/runners:latest

    container_name: n8n-task-runner

    restart: always

    environment:

    - N8N_RUNNERS_ENABLED_MODES=python

      - N8N_RUNNERS_BROKER_URL=ws://n8n:5679

      - N8N_RUNNERS_AUTH_TOKEN=super_secure_token_change_me

    depends_on:

      - n8n



  postgres:

    image: postgres:15-alpine

    container_name: n8n-postgres

    restart: always

    environment:

      - POSTGRES_USER=n8n_user

      - POSTGRES_PASSWORD=your_postgres_password  

      - POSTGRES_DB=n8n

    volumes:

      - postgres_data:/var/lib/postgresql/data

    healthcheck:

      test: ["CMD-SHELL", "pg_isready -U n8n_user -d n8n"]

      interval: 5s

      timeout: 5s

      retries: 5



volumes:

  n8n_data:

  postgres_data:

Wie kann ich das beheben?

Vielen Dank im Voraus!

Willkommen @Quent!

Dein Runner-Service hat zwei falsche Umgebungsvariablennamen, die das Timeout verursachen. Ersetze N8N_RUNNERS_BROKER_URL durch N8N_RUNNERS_TASK_BROKER_URI=http://n8n:5679, und ersetze N8N_RUNNERS_ENABLED_MODES durch N8N_RUNNERS_ENABLED_TASK_TYPES=javascript,python. Behebe auch die YAML-Einrückung in deinem Runner-environment-Block - alle Elemente benötigen konsistente führende Leerzeichen. Hier ist der korrigierte n8n-runner-Service:

n8n-runner:
image: n8nio/runners:latest
container_name: n8n-task-runner
restart: always
environment:

  • N8N_RUNNERS_ENABLED_TASK_TYPES=javascript,python
  • N8N_RUNNERS_TASK_BROKER_URI=http://n8n:5679
  • N8N_RUNNERS_AUTH_TOKEN=super_secure_token_change_me
    depends_on:
  • n8n

Nach dem Aktualisieren führe docker compose down && docker compose up -d aus. Falls Timeouts immer noch auftreten, kannst du N8N_RUNNERS_TASK_REQUEST_TIMEOUT=120 zur Umgebung des n8n-Service hinzufügen, um dem Runner mehr Zeit zu geben.

Danke!