Workers 속성

Nginx 인스턴스를 실행하지 않고 웹 인스턴스와 독립적으로 실행할 작업자를 정의할 수 있지만 작업자는 Commerce 응용 프로그램에서 사용하는 것과 동일한 네트워크 저장소를 사용합니다. 라우터가 공용 요청을 작업자에게 전달할 수 없으므로 Node.js 또는 Go를 사용하여 작업자 인스턴스에 웹 서버를 설정할 필요가 없습니다. 따라서 작업자 인스턴스가 백그라운드 작업 또는 배포 차단의 위험이 있는 작업을 지속적으로 실행하는 데 이상적입니다.

작업자 구성

작업자는 Pro Staging 및 프로덕션 환경에서만 사용할 수 있습니다. Pro 통합 및 Starter 환경에서는 CRON_CONSUMER_RUNNER 변수를 사용하도록 선택할 수 있습니다.

Pro 스테이징 또는 프로덕션에서 작업자를 구성하려면 Adobe Commerce 지원 티켓을 제출하고 다음 정보를 포함하십시오.

  • 프로젝트 ID
  • 환경 ID
  • 작업자 이름
  • 시작 명령

작업자당 하나의 프로세스를 구성할 수 있습니다. .magento.app.yaml 파일의 기본 일반 작업자 구성은 다음과 같습니다.

workers:
    queue:
        commands:
            start: |
                php ./bin/magento queue:consumers:start commerce.eventing.event.publish

이 예제에서는 작은(크기 S) 수준의 리소스 할당을 사용하는 queue(이)라는 단일 작업자를 정의하고 시작 시 php ./bin/magento 명령을 실행합니다. 그러면 작업자 queue이(가) 각 노드에서 작업자 프로세스로 실행됩니다. 명령이 종료되면 자동으로 다시 시작됩니다.

명령 및 무시

작업자 응용 프로그램에서 명령을 실행하려면 commands.start 키가 필요합니다. 응용 프로그램의 언어를 사용하는 것이 이상적이지만 모든 유효한 셸 명령을 사용할 수 있습니다. start 키로 지정된 명령이 종료되면 자동으로 다시 시작됩니다.

IMPORTANT
deploypost_deploy 후크와 crons 명령은 작업자 인스턴스가 아닌 웹 컨테이너에서만 실행됩니다.

상속

size, relationships, access, diskmountvariables 속성에 대한 정의는 명시적으로 재정의되지 않는 한 작업자가 상속합니다.

다음 속성은 최상위 설정을 재정의하는 데 가장 일반적으로 사용됩니다.

  • size - 단일 백그라운드 프로세스에 더 적은 수의 리소스를 할당
  • variables—응용 프로그램을 다르게 실행하도록 지시합니다.

타이밍 및 큐

각 작업자는 다른 작업자의 대기열에 있지만, 다음 구성은 PHP 코드 내의 8초 휴지에 관계없이 var/time.txt 파일에서 일관성 있는 2초 간의 타임스탬프 분리를 생성합니다.

workers:
    time1:
        commands:
            start: 'php -r "sleep(8); echo time() . PHP_EOL;" >> var/time.txt& sleep 2'
recommendation-more-help
05f2f56e-ac5d-4931-8cdb-764e60e16f26