.. meta:: :keywords: PLUGIN NODE JSON .. _doc-plugin-node-json: 노드 플러그인 JSON ================== 이 페이지는 노드의 설정정보를 변경할 수 있는 JSON 구성 가이드 입니다. 전체 구조 --------- +-------------+--------------+--------------------+ | Name | Type | Description | +=============+==============+====================+ | logger | object | 로그 설정 | +-------------+--------------+--------------------+ | socket | object | 관리용 소켓 설정 | +-------------+--------------+--------------------+ | inits | object array | 초기화 명령 모음 | +-------------+--------------+--------------------+ | plugin | object | 플러그인 설정 | +-------------+--------------+--------------------+ | models | object array | 모델 설정 목록 | +-------------+--------------+--------------------+ | processes | object array | 프로세스 설정 목록 | +-------------+--------------+--------------------+ | immutable | bool | 설정파일 변경 여부 | +-------------+--------------+--------------------+ 루트 JSON 구조는 다음과 같습니다. .. code-block:: javascript :linenos: { "logger": { ... }, "socket": { ... }, "inits": [ ... ], "plugin": { ... }, "models": [ ... ], "processes": [ ... ], "immutable": true } logger ------ 로그 설정 입니다. 노드의 상세 정보를 확인할 수 있습니다. +-------------+--------+-------------------------------+ | Name | Type | Description | +=============+========+===============================+ | name | string | 로그 이름 | +-------------+--------+-------------------------------+ | sink | string | 로그 싱크 | +-------------+--------+-------------------------------+ | arguments | string | 싱크의 인자 | +-------------+--------+-------------------------------+ | generator | string | 로그 메시지 생성기 | +-------------+--------+-------------------------------+ | line_feed | string | 메시지별 개행 여부 | +-------------+--------+-------------------------------+ | severity | string | 적용될 로그 심각도 | +-------------+--------+-------------------------------+ | auto_flush | bool | 로그 버퍼의 자동 플러시 여부 | +-------------+--------+-------------------------------+ | thread | bool | 멀티 스레드 모드 적용 여부 | +-------------+--------+-------------------------------+ **sink** 는 로그 메시지의 마지막 종착지점 입니다. 아래의 값 중 하나를 사용할 수 있습니다. - ``console``: TTY 터미널에 로그를 출력합니다. - ``file``: 로그를 파일로 저장합니다. - ``rotate_file``: 현재, 공식적으로 지원되지 않습니다. - ``null``: 모든 메시지를 버립니다. **sink** 의 값이 ``console`` 일 경우 아래의 값을 **arguments** 로 사용할 수 있습니다. - ``stdout``: 표준 출력을 사용합니다. - ``stderr``: 표준 에러를 사용합니다. - ``auto``: 에러 보다 심각한 메시지는 ``stderr`` 로, 그 밖의 경우는 ``stdout`` 을 사용합니다. **sink** 의 값이 ``file`` 일 경우 **arguments** 값은 파일 경로에 해당됩니다. **generator** 는 로그 메시지를 생성할 규칙을 지정할 수 있습니다. 아래의 값 중 하나를 사용할 수 있습니다. - ``default``: 기본 포맷을 사용합니다. - ``default_color``: 기본 포맷에, *Terminal Control Escape Sequences* 를 적용하여 색상을 적용합니다. - ``raw``: 원본 메시지를 그대로 사용합니다. - ``raw_color``: 원본 메시지에, *Terminal Control Escape Sequences* 를 적용하여 색상을 적용합니다. **line_feed** 은 아래의 값 중 하나를 사용할 수 있습니다. - ``auto``: 시스템에 맞는 개행을 적용합니다. - ``unix``: LF(``\n``)를 사용합니다. - ``windows``: CRLF(``\r\n``)를 사용합니다. **severity** 은 아래의 값 중 하나를 사용할 수 있습니다. - ``off``: 출력을 끕니다. - ``emergency``: 비상 - ``alert``: 경고 - ``critical``: 중요 - ``error``: 오류 - ``warning``: 경고 - ``notice``: 알림 - ``info``: 정보 - ``debug``: 디버깅 예제 코드는 다음과 같습니다. .. code-block:: javascript :linenos: { "name": "default.logger", "sink": "console", "arguments": "stdout", "generator": "default_color", "line_feed": "auto", "severity": "notice", "auto_flush": true, "thread": true } socket ------ 관리용 소켓 설정. 노드와 통신할 소켓 설정 입니다. +-------------------------+----------+--------------------------------------------------------------+ | Name | Type | Description | +=========================+==========+==============================================================+ | recv_timeout | string | 소켓의 수신 제한시간 | +-------------------------+----------+--------------------------------------------------------------+ | send_timeout | string | 소켓의 송신 제한시간 | +-------------------------+----------+--------------------------------------------------------------+ | recv_number_of_messages | unsigned | 소켓의 수신 버퍼가 수용할 수 있는 메시지 개수 | +-------------------------+----------+--------------------------------------------------------------+ | send_number_of_messages | unsigned | 소켓의 송신 버퍼가 수용할 수 있는 메시지 개수 | +-------------------------+----------+--------------------------------------------------------------+ | recv_buffer_byte | string | 단일 패킷의 수신 버퍼의 크기 | +-------------------------+----------+--------------------------------------------------------------+ | send_buffer_byte | string | 단일 패킷의 송신 버퍼 크기 | +-------------------------+----------+--------------------------------------------------------------+ | reconnect_time_min | unsigned | 이전 연결 시도가 실패한 후 재시도 까지 대기하는 최소 시간 | +-------------------------+----------+--------------------------------------------------------------+ | reconnect_time_max | unsigned | 이전 연결 시도가 실패한 후 재시도 까지 대하기는 최대 시간 | +-------------------------+----------+--------------------------------------------------------------+ 예제 코드는 다음과 같습니다. .. code-block:: javascript :linenos: { "recv_timeout": "4sec", "send_timeout": "1sec", "recv_number_of_messages": 16, "send_number_of_messages": 16, "recv_buffer_byte": "32m", "send_buffer_byte": "32m", "reconnect_time_min": 10, "reconnect_time_max": 10 } inits ----- 초기화 목록. 노드 실행시 실행됩니다. +---------------+----------+--------------------------+ | Name | Type | Description | +===============+==========+==========================+ | type | string | 초기화 타입 | +---------------+----------+--------------------------+ | arguments | string | 초기화 타입에 따른 인자 | +---------------+----------+--------------------------+ | branch | string | 브렌치 이름 | +---------------+----------+--------------------------+ | auto_update | bool | 자동 업데이트 여부 | +---------------+----------+--------------------------+ | destination | string | 결과 위치 | +---------------+----------+--------------------------+ 예제 코드는 다음과 같습니다. .. code-block:: javascript :linenos: { "type": "git", "arguments": "https://github.com/bogonets/answer-lambda-cv2", "branch": "master", "auto_update": true, "destination": "${STORAGE_PYTHON}/answer-lambda-cv2" } plugin ------ 플러그인 정보. +------------------+----------+---------------------------------------------+ | Name | Type | Description | +==================+==========+=============================================+ | script | string | 스크립트 위치 | +------------------+----------+---------------------------------------------+ | event_create | string | 노드가 생성될 때 호출할 함수 | +------------------+----------+---------------------------------------------+ | event_loop_begin | string | 노드의 이벤트 루프 시작 함수 | +------------------+----------+---------------------------------------------+ | event_loop_end | string | 노드의 이벤트 루프 종료 함수 | +------------------+----------+---------------------------------------------+ | event_destroy | string | 노드가 소멸될 때 호출할 함수 | +------------------+----------+---------------------------------------------+ 예제 코드는 다음과 같습니다. .. code-block:: javascript :linenos: { "script": "${STORAGE_PYTHON}/npp.py", "event_create": "on_create", "event_loop_begin": "on_loop_begin", "event_loop_end": "on_loop_end", "event_destroy": "on_destroy" } models ------ 노드 시작시 함께 실행할 모델 목록 입니다. processes --------- 노드 시작시 함께 실행할 프로세스 목록 입니다. immutable --------- ``true`` 일 경우 Node 종료시 마지막 설정 정보로 변경 및 적용됩니다.