У меня есть приложение для Android, которое использует Google Cloud Endpoints для синхронизации данных между устройствами. В настоящее время при каждом вызове API сообщение GCM отправляется на все остальные устройства. Часто устройства выполняют не только один вызов API, но и несколько непосредственно друг за другом. В этой ситуации становится крайне неэффективно отправлять сообщение при каждом вызове, потому что тогда все остальные устройства будут делать несколько вызовов для получения новых данных, а не только один для всех.
Итак, моя идея в основном состоит в том, чтобы после вызова API подождать ~ 10 секунд, а затем отправить сообщение GCM. Всякий раз, когда поступает новый вызов, и таймер сбрасывается.
Моя проблема в том, что я действительно не знаю, как это сделать в AppEngine. Моей первой идеей была TaskQueue с задачей, названной определенным образом и имеющей 10-секундную задержку. В вызове API я проверяю, находится ли задача в очереди, и если да, я удаляю ее и вставляю новую. Это было невозможно, потому что имя задачи нельзя использовать снова, даже если задача больше не существует.