2017-02-10 4 views
0

Я запускаю GmailApp.search, чтобы найти немаркированную электронную почту, классифицировать ее и затем пометить ее, если она соответствует различным правилам. Скрипт запускается каждые 10 минут, но получает предупреждения «превышение предельного уровня пользователя». Ниже представлен поиск GmailApp, который я запускаю. Обычно у меня есть только 100 немаркированных писем в моем почтовом ящике, поэтому я бы не ожидал, что для этого потребуется много ресурсов, если поиск будет каким-то образом эффективным.Превышен лимит пользовательской скорости GMailApp.search

function RunRules() 
{ 
    var threads = GmailApp.search("label:inbox has:nouserlabels"); 
    if (threads.length > 0) 
    { 
     for (var idxThread=threads.length-1; idxThread>=0; idxThread--) 
     { 
     var messages = threads[idxThread].getMessages(); 
     if (messages) 
     { 
      for (var idxMsg=messages.length-1; idxMsg>=0; idxMsg--) 
      { 

      if (messages[idxMsg].isInInbox()) 
      { 
       RunRulesOnMessage(messages[idxMsg]); 
      } 
      } 
     } 
     } 
    } 
} 

Любые предложения, как избежать ограничения скорости пользователя?

Спасибо, Dave

ответ

0

Исходя из Usage Limits, Gmail API имеют для каждого пользователя ограничение скорости в 250 quota per second.

Внимательно прочитайте, что есть также соответствующие единицы квоты для каждого метода, который вы можете использовать, и, как указано, количество единиц квоты, потребляемых запросом, варьируется в зависимости от вызванного метода.

Таким образом, возможно, что вы превысите свой предел для каждого пользователя, если, например, клиент запрашивает 75 немаркированных сообщений, используя messages.get, что эквивалентно единицам квоты на запрос.

Для этого, я полагаю, что вы, пожалуйста, попробуйте следующее:

  • осуществлять повторные попытки с exponential backoff в случае временных ошибок, таких как, HTTP 429 ошибок, HTTP 403 ошибок квотирования или HTTP 5xx ошибок.
  • batching requests, который позволяет вашему клиенту размещать несколько вызовов API в одном HTTP-запросе. Тем не менее, более крупные размеры партии могут вызвать ограничение скорости, и отправка пакетов более 50 запросов не рекомендуется.

Наконец, вы также можете проверить Gmail Per-User Limits, который не может быть увеличен по любой причине.

Надежды выше информации помогает!

Смежные вопросы