Вимірювання часу обробки у консоль під час налагодження
Якщо ви знайомі з JavaScript/TypeScript, ви, напевно, використовували console
або console
, щоб під час налагодження перевірити, що відбувається. Під час роботи з вашим ботом або проміжним обробником ви, можливо, захочете перевірити щось подібне: що відбулося і скільки часу це зайняло?
Цей плагін призначений для налагодження окремих запитів з метою вирішення окремих проблем. У продакшн середовищі вам знадобиться щось інше, щоб отримати загальну інформацію про всі запити. Наприклад, під час налагодження проблеми з командою /start
ви перевіряєте окреме оновлення Telegram. У контексті продакшену вас скоріше цікавлять взагалі всі оновлення з командою /start
, але ця бібліотека призначена для допомоги в роботі з окремими оновленнями.
Налагодження вашої реалізації
import { generateUpdateMiddleware } from "telegraf-middleware-console-time";
if (process.env.NODE_ENV !== "production") {
bot.use(generateUpdateMiddleware());
}
// Ваша реалізація
bot.command("start" /* , ... */);
2
3
4
5
6
7
8
Цей код виведе щось на зразок цього:
2020-03-31T14:32:36.974Z 490af message text Andrii 6 /start: 926.247ms
2020-03-31T14:32:57.750Z 490ag message text Andrii 6 /start: 914.764ms
2020-03-31T14:33:01.188Z 490ah message text Andrii 5 /stop: 302.666ms
2020-03-31T14:46:11.385Z 490ai message text Andrii 6 /start: 892.452ms
2
3
4
490af
— це update
.
Число перед командами — це загальна довжина вмісту. Це корисно, коли потрібно врахувати максимальну довжину для таких речей, як дані зворотного виклику.
Сам вміст скорочується, щоб запобігти засміченню журналу.
Налагодження вашого проміжного обробника
Коли ви створюєте власний проміжний обробник або вважаєте, що якийсь проміжний обробник повільний, ви можете використовувати ці проміжні обробники, щоб створити профіль часу виконання.
import {
generateAfterMiddleware,
generateBeforeMiddleware,
} from "telegraf-middleware-console-time";
const bot = new Bot("");
// Використовуйте BeforeMiddleware перед встановленням проміжного обробника, що тестується.
bot.use(generateBeforeMiddleware("foo"));
// Проміжний обробник, який потрібно протестувати.
bot.use(); /* ... */
// Використовуйте AfterMiddleware з тією самою міткою, після встановлення проміжного обробника, що тестується.
bot.use(generateAfterMiddleware("foo"));
// Усі інші проміжні обробники та код боту, рахуватимуться як "inner" при вимірюванні часу.
bot.use(); /* ... */
bot.on("message" /* ... */);
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Цей код виведе щось на зразок цього:
490ai foo before: 304.185ms
490ai foo inner: 83.122ms
490ai foo after: 501.028ms
490ai foo total: 891.849ms
2
3
4
Це свідчить про те, що перевірений проміжний обробник виконувався сам по собі 800 мс і, можливо, його продуктивність недостатня.