У меня есть очередь на выгрузку, обслуживаемая бэкэнд, а когда очередь пуста, мне нужно запустить другой скрипт.Ошибка загрузки статистики очереди приложений Google App Engine
В настоящее время я использую очень грубое обнаружение в методе, который лишает задачи из очереди, так что, если возвращаемый список задач пуст, мы исходим из того, что больше нечего сдавать в аренду и запускать следующий шаг. Однако, хотя это работает большую часть времени, иногда запрос на аренду, кажется, возвращает пустой список, хотя есть доступные задачи.
В любом случае, лучший способ сделать это Я считаю, что использовать метод fetch_statistics для очереди. Таким образом, сценарий может отслеживать, что происходит в очереди на выносливость, и знать, что в очереди больше нет элементов. Теперь это, очевидно, доступно через REST api для очередей, но кажется, что это слишком удобно для использования, когда я использую их внутри.
Так что я делаю вызов Queue.fetch_statistics(), но он выдает ошибку. Я попытался поместить указанную ошибку в Google, но ничего не возвращает. То же самое и в stackoverflow.
Он всегда бросает:
AttributeError: type object 'QueueStatistics' has no attribute '_QueueStatistics__TranslateError'
Мой код:
q = taskqueue.Queue('reporting-pull')
try:
logging.debug(q.fetch_statistics())
except Exception, e:
logging.exception(e)
Может кто-нибудь пролить свет на это? Я делаю что-то действительно глупо здесь?
AFAIK [Queue] (http://code.google.com/appengine/docs/python/taskqueue/queues.html) не имеет метода fetch_statistics –
Это так, ну конечно же в коде sdk, но его не документировано. Это метод, который используется JSONified для службы REST API. В задаче.ого линия 1810 'Защита fetch_statistics (самостоятельно): «»«Получить текущие сведения об этой очереди Возвращает:.. Экземпляра QueueStatistics, содержащая информация об этой очереди „“» возвращение QueueStatistics.fetch (сами) ' Также исключенное исключение относится к объекту, возвращаемому из метода, а не к самому методу, который не существует. Во время работы он может немного отличаться. –
, работающий с недокументированным api, где любой момент, когда провайдер может отключить вас и сломать вас, не является самым мудрым делом. –