бот
ставлю в сообщении метку о том что оно получено и потом везде добавляю всякие шаги
метка ставится так:
msg.conf['_started_at'] = time.monotonic()
шаги отслеживаются так:
msg.conf['_steps'] = list()
msg.conf['_steps'].append(('added time', time.monotonic(), time.monotonic()-msg.conf['_started_at']))
выполнение всех мидлварей типичного сообщения выглядит так:
('added time', 496832.199547952, 5.505979061126709e-06)
('added conns', 496832.199566058, 1.8377031665295362e-05)
('added role', 496832.321245542, 0.12167987902648747)
('started throttling', 496832.535132689, 0.21388781198766083)
('finished throttling', 496832.682633223, 0.14750073000323027)
соответственно разница между последним шагом и первым - 0,483
в хендлер первой строкой делаю вот это:
t = msg.conf['_started_at']
txt = []
txt.append(f'got message in handler {time.monotonic() - t}')
то есть должно выдавать время от входа в первую мидлварь до входа в хендлер
а вывод txt выдает вот это:
got message in handler 1.8203015549806878
то есть все мидлвари выполняются за 0,483, а до хендлера доходит за 1,82
вопрос
куда ушли еще 1,337 секунды?
фильтр один и он взаимодействует только с существующими свойствами сообщения, то есть в сеть не ходит и выполняется моментально
фсм - редис на соседнем хосте с пингом в районе 1-2 мс, на нем нагрузка около 2к рпс
Аиограм самый последний
Большой код на некобин скидывай
Нужно разделять ситуации, где огромный код, а где длиннопост. В данном случае всё нормально
Обсуждают сегодня