이 페이지에서는 태스크 큐의 정의, 사용 시기, 사용 방법을 설명합니다. 태스크 큐를 사용하면 애플리케이션이 사용자 요청 이외에도 비동기식으로 태스크라는 작업을 수행할 수 있습니다. 앱이 백그라운드에서 작업을 실행해야 하는 경우 태스크 큐에 태스크를 추가합니다. 태스크는 나중에 작업자 서비스에 의해 실행됩니다.
태스크 큐 서비스는 비동기 작업을 위해 설계되었습니다. 작업 전송 시점을 완벽하게 보장하지 않으므로, 사용자가 결과를 기다리는 대화형 애플리케이션에는 적합하지 않습니다.
push 큐와 pull 큐
태스크 큐에는 push와 pull이라는 2가지 유형이 있습니다. 태스크 큐 서비스가 작업 요청을 작업자 서비스로 전달하는 방식은 대기열마다 다릅니다.
push 큐는 App Engine 작업자 서비스에 HTTP 요청을 전달하여 태스크를 실행합니다. 이러한 push 큐는 안정적이고 일정한 속도로 요청을 보내고 안정적으로 태스크를 실행합니다. 사용자는 태스크가 대기열에서 전송되는 속도를 제어할 수 있으므로 작업자의 확장 동작과 비용을 제어할 수 있습니다.
태스크는 App Engine 서비스를 대상으로 하는 요청으로 실행되므로 엄격한 기한이 적용됩니다. 자동 확장 서비스로 처리되는 태스크는 10분 안에 완료되어야 합니다. 기본 및 수동 확장 서비스로 처리되는 태스크는 최대 24시간 동안 실행될 수 있습니다.
pull 큐 태스크를 전혀 보내지 않습니다. 대신 다른 작업자 서비스를 사용하여 큐에서 태스크를 자체적으로 '임대'합니다. pull 큐를 사용하면 태스크가 처리되는 시기와 장소에 대해 더 많은 권한과 유연성을 얻는 대신 더 많은 프로세스를 관리해야 합니다. 태스크가 임대되면 임대 작업자가 기한을 선언합니다. 기한이 도래하면 작업자는 태스크를 완료하고 삭제해야 합니다. 그렇지 않으면 태스크 큐 서비스에서 다른 작업자가 태스크를 임대하도록 허용합니다.
모든 태스크 큐 작업은 비동기적인 방식으로 수행됩니다. 태스크를 만드는 애플리케이션이 태스크를 대기열로 전송합니다. 원본 애플리케이션에는 태스크의 완료 또는 성공 알림이 표시되지 않습니다.
작업자가 태스크를 처리하지 못하면 태스크 큐 서비스에서 재시도 메커니즘을 대기열에 제공하므로 제한된 횟수만큼 태스크를 다시 시도할 수 있습니다.
사용 사례
push 큐
push 큐의 일반적인 사용 사례는 '느린' 작업입니다. 소셜 네트워크 메시지 시스템을 예로 들어 보겠습니다. 사용자가 메시지를 보낼 때마다 네트워크는 보내는 사람의 팔로어를 업데이트해야 합니다. 이 작업에는 시간이 매우 오래 걸릴 수 있습니다. push 큐를 사용할 경우, 애플리케이션은 각 메시지 작업이 도착하면 이를 대기열에 추가하여 처리를 위해 작업자 서비스에 발송할 수 있습니다. 작업자가 태스크 요청을 받으면 보내는 사람의 팔로어 목록을 검색하여 각각의 DB를 업데이트할 수 있습니다. 각 데이터베이스 업데이트마다 다른 내보내기 태스크를 대기열에 추가하면 작업자의 효율성을 높일 수 있습니다.
push 큐의 또 다른 용도는 예약 작업입니다. 광고 캠페인을 구현하는 애플리케이션을 생각해 봅시다. 이메일 발송을 위해 작성된 태스크 그룹을 push 큐에 추가하고 향후 지정된 시간까지 태스크를 보류하라는 명령을 포함할 수 있습니다. 기한이 만료되면 태스크 큐 서비스가 태스크 실행 요청을 실행하기 시작합니다.
다음 단계
- push 큐 읽어보기