0

나는 app 엔진 응용 프로그램을 가지고 있습니다. 내 데이터베이스에서 사용자가 토큰을 새로 고쳐 Google 드라이브에 액세스 할 수있게했습니다.어떤 대기열을 사용해야합니까 (App Engine)

지금, 나는이를 만들려면 :

매주 (나는 모든 7 일을 의미), 내가 사용자 PDF 문서 구글에서 운전하고 그들과 함께 작업을 다운로드 temorary 싶다. 각 사용자에게 자신의 PDF 문서에 대한 메일을 보냅니다.

주요 문제는 많은 사용자가있을 수 있다는 것입니다. 각 사용자에게는 많은 문서가있을 수 있습니다. 일주일에 한 번씩 각 사용자에 대해 작업을 수행해야합니다. 그러나 각 사용자 데이터에는 많은 시간이 필요합니다.

질문 : 이제 시간 서비스를 사용해야합니까? 크론 또는 작업 대기열. 그리고 왜? 그리고 만약 Task Queue라면 어느 것인가. 더 빨라지고 유연해질 것인가? 나도 나중에 사용자에게 메일을 보낼 수 있습니다. (사용자가 요청할 때 즉시 메일을 보낼 필요가 없습니다.)

QUESTION2 : 예를 들어 일주일에 한 번 작업 대기열을 실행할 수 있습니까?

예를 들어

나는 그것을 내가 그 같은 것을 사용할 수 있습니다 매일 실행하려면 :

<rate>1/d</rate> 

를하지만 내가 어떻게 할 수 일주일에 한 번?

QUESTION3 : 많은 사용자가있을 수 있습니다의 때문에 나는 그런 일을 사용할 수 있습니다 (때문에 각 사용자의 많은 시간을 필요로)?

CRON 작업은 매주 (일주일에 한 번)됩니다. 그리고 CRON은 각 사용자에 대해 TASK QUEUSE를 호출합니다. 각 사용자 데이터는 임시로 앱 엔진 서버에 다운로드됩니다 (메모리에 저장하면 서버에 매우 어려움). 그런 다음 PDF 문서를보고 각 사용자에게 메일을 보냅니다. 이게 좋은 방법인가요? 또는 CRON 만 사용해야합니까? 나는 여기에 한계가 있 었는가? 서버 저장 장치 또는 대기열 또는 이와 유사한.

답변

1

둘 다 사용하십시오. 7 일마다 실행하려면 cron job을 만듭니다. cron 작업을 수행하여 PDF를 처리하는 작업 (push queue)을 실행하십시오. 처리 할 각 PDF에 대해 별도의 작업을 사용하고 올바른 비율로 처리하도록 configure your queue.yaml을 지정합니다 (예산/속도 제한 요소 등에 따라 다름).

메일을 보내야하는 경우 mail api을 통해 작업 요청에서이 작업을 수행 할 수 있습니다.

많은 사용자가있는 경우 cron 작업을 매 7 일 (예 : 하루에 한 번 또는 그 이상)보다 자주 실행하는 것이 더 나은 방법 일 수 있습니다. 논리를 사용하여 cron이 실행될 때마다 처리해야하는 사용자를 판별 할 수 있습니다. 이것은 부하일지도 모르고 궁극적으로 돈을 절약 할 수 있습니다.

+0

한 명의 사용자가 10 또는 50 개의 PDF 문서를 보유하고있을 수 있습니다. 각 PDF의 작업을 분리하여 각 사용자의 PDF를 처리하거나 별도의 작업을 수행해야합니까? – grep

+0

각 사용자에게 자신의 pdfs 데이터에 대한 이메일을 보내야합니다 ... – grep

+0

PDF로 무엇을하고 있는지에 따라 크게 달라질 수 있지만보다 견고한 방법은 각 PDF에 대해 별도의 작업을 수행하는 것입니다. 이렇게하려면 다른 작업의 진행 상황을 확인하기 위해 모니터 작업이 필요합니다. Pipeline API에는 이러한 유형의 기능이 내장되어 있습니다. -> https://code.google.com/p/appengine-pipeline/ –