Журналы Stackdriver имеют одинаковую метку времени для фоновых потоков движка приложения

Я использую background_thread из google.appengine.api в стандартном приложении движка приложения, чтобы создать поток, который каждые 30 секунд опрашивает очередь задач извлечения для поиска новых задач. Движок приложения группирует журналы для каждого запуска в записи / _ah / background в драйвере стека, причем все, что зарегистрировано приложением, сгруппировано внутри этой записи.

Проблема в том, что все зарегистрированные / _ah / background имеют ту же временную метку, что и для первой созданной записи, но сгруппированные под ней журналы приложений показывают правильную временную метку. Это также приводит к тому, что драйвер стека не регистрирует журналы после дневного прогона, когда он достигает предела (вероятно, поскольку все записи регистрируются с одной и той же меткой времени).

Любые идеи о том, почему записи / _ah / background имеют одинаковую метку времени?


person JourneyMan    schedule 18.03.2018    source источник


Ответы (1)


Каждый раз, когда запускается фоновый поток, делается специальный запрос к / _ah / background. То есть фоновый поток работает так, как будто он обслуживает запрос к / _ah / background. Все журналы, поступающие из фонового потока, записываются для этого конкретного запроса. Во время работы фонового потока метки типа «active start = 2013-08-21,11: 15: 17.586» будут записываться вместо кода ответа HTTP и прошедшего времени. Если он завершается, в журнале отображается код ответа и фактическое истекшее время.

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

Помня об этом, обратите внимание, что entries.write Вызовы API ограничение составляет 1000 операций записи в секунду для каждого проекта. Следовательно, это может не быть причиной остановки регистрации.

person oakinlaja    schedule 22.03.2018
comment
Есть ли способ заставить фоновые потоки регистрировать текущее время для _ah / background, а не время прибытия запроса? - person JourneyMan; 26.03.2018
comment
К сожалению, как подтверждается в ссылке, дизайн состоит в том, чтобы загромождать все фоновые процессы. Однако вы можете вручную управлять тем, что именно вы хотите регистрировать, используя Logging. API. Точно так же вы можете программно записывать журналы приложений из своего приложения. . - person oakinlaja; 28.03.2018