РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
⊗jsnsSpObHs 191 of 201 menu
◀ ▶

След обработчика в Nest

Корневой след запроса уже виден, но тяжёлая подготовка данных в одном классе сливается с остальными вызовами: по одному автоматическому узлу непонятно, сколько времени ушло на отдельный шаг внутри операции.

Агент и так пишет узлы для вызовов провайдеров, а для своего имени и границ шага служит TracerService из @nestjs/observe. createSpan открывает вложенный след внутри текущего запроса; в колбек передают делегат TraceSpanDelegate, если нужны метки на этом узле.

Покажем на примере постов:

import { Injectable } from '@nestjs/common'; import { TracerService } from '@nestjs/observe'; @Injectable() export class PostService { constructor(private tracer: TracerService) {} async getPosts(): Promise<string> { return this.tracer.createSpan( 'load-post-list', async () => { return 'All posts'; }, ); } }

Контроллер по-прежнему обращается к сервису; в Observe под узлом запроса появится отдельный именованный фрагмент с длительностью подготовки списка.

import { Controller, Get } from '@nestjs/common'; import { PostService } from './post.service.js'; @Controller() export class PostController { constructor(private postService: PostService) {} @Get('posts') async getPosts(): Promise<string> { return this.postService.getPosts(); } }

Оберните загрузку списка в WorkerService в отдельный след.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить