У меня есть очередь извлечения, обслуживаемая бэкэндом, и когда очередь пуста, мне нужно запустить другой сценарий.
В настоящее время я использую очень грубое обнаружение в методе, который арендует задачи из очереди, поэтому, если возвращаемый список задач пуст, мы предполагаем, что больше нет аренды и инициируем следующий шаг. Однако, хотя это работает большую часть времени, иногда кажется, что запрос на аренду возвращает пустой список, даже если есть доступные задачи.
В любом случае, я думаю, что лучший способ сделать это - использовать метод fetch_statistics в Queue. Таким образом, сценарий может отслеживать, что происходит в очереди извлечения, и знать, что в очереди больше нет элементов. Теперь это очевидно доступно через API REST для очередей, но, кажется, довольно неудобно использовать это, когда я использую их внутри.
Итак, я делаю вызов 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)
Может кто-нибудь пролить свет на это? Я делаю что-то действительно глупое здесь?