2014-09-20 3 views
2

모바일 앱 (android)의 백엔드로 appengine (java)을 사용합니다. 내 앱 사용자는 제목과 날짜/시간으로 구성된 공개 이벤트를 만들 수 있습니다. 이러한 이벤트는 내 appengine 백엔드에 저장됩니다. 모든 사용자는 이벤트를 구독 할 수 있으며 이벤트가 시작될 때 푸시 알림을받습니다.App Engine의 일정 작업

그래서 appengine의 작업/작업을 날짜/시간 이벤트에서 실행하여 모든 구독자에게 푸시 알림을 보내도록 예약하고 싶습니다.

예 : 사용자 A는 다음 주 토요일 오후 8시에 시작할 이벤트를 만듭니다. 사용자 B와 사용자 B는이 이벤트에 가입합니다. 토요일 오후 8시에 작업/작업이 사용자 B와 사용자 C에게 푸시 알림을 보내야 이벤트가 시작되었음을 알릴 수 있습니다.

내 질문 : 효율적인 방법으로 appengine에서 어떻게 구현합니까? 나는 토요일 오후 8시에 Event for Task를 시작한다고 말하고 싶다. Cronjobs와 TaskQueues가 있습니다. Cronjob은 프로그래밍 방식으로 만들 수 없습니다. TaskQueue를 가져와야하고 주어진 날짜/시간에 가져 오도록 예약 할 수 없습니까? 그래서 내가 볼 수있는 유일한 해결책은 지금 시작되는 이벤트가 있는지 확인하기 위해 매분 실행되는 cronjob을 만드는 것입니다.

언제든지 이벤트를 만들 수 있습니다. 그러나 대부분의 이벤트는 주말에 만들어지며 이벤트가 생성되지 않은 날이 있습니다. 주기적으로 cronjob을 작동시키는 것은 매우 비효율적입니다. Im은 더 똑똑한 해결책, 어떤 아이디어를 찾고 있습니까?

답변

3

실제로 설명에 따르면 해결 방법은 지금 시작되는 새 이벤트를 확인하는 크론 작업을 만드는 것입니다.

그러나 각 cron 작업에 대해 10 분의 창을 초과하지 않도록주의해야합니다. 많은 이벤트가있는 경우 푸시 작업 대기열을 사용하여 실제 처리를 cron 작업에서 백그라운드 작업으로 이동해야합니다.

크론 작업과 작업 대기열의 조합에 대해서는 this 게시물을 참조하십시오.

+0

cron에서 호출 한 HTTP 요청은 30 초가 아니라 최대 10 분 동안 실행할 수 있습니다. https://cloud.google.com/appengine/docs/python/config/cron – Adam

+0

정확합니다. cron에 대한 제한이 변경되었습니다. 나는 내 대답을 편집했다. 지적 해 주셔서 고마워요. –