TGViewer
Бессонный кодер Бессонный кодер @sleeplesscode · 4.25K subscribers
Post #608 2.46K
Кстати, я упомянул фейлы, но не пояснил о них, давайте я расскажу интересную притчу об одном небольшом косяке который выдал неожиданные проблемы 😄

У нас в Стражнике сейчас потихоньку идёт полный перенос всей логики отправки сообщений в единую очередь, чтобы не было случаев когда одна команда выжрала весь рейтлимит и очередь ловит 429 на попытку отправить в нормальных пределах. Чтобы отправить задачу в очередь у нас используется несколько конструкций

Отправка через контекст:
await ctx.sendMessage("command:admins", ctx.chat.id, await ctx.lang.t('commands.general.disabled'), {
reply_parameters: {
message_id: ctx.message.message_id,
allow_sending_without_reply: true
}
});


Ответ через контекст (для случаев когда мы отвечаем на что-то в тот же чат и тот же тред):
await ctx.replyQueued(await ctx.lang.t('commands.general.disabled'), {
reply_parameters: {
message_id: ctx.message.message_id,
allow_sending_without_reply: true
}
});


Отправка вне контекста (ей к примеру пользуется отправка сообщений через API, когда у нас нет контекста обновления от ТГ):
await Queues.getInstance().sendMessage("main", "command:admins", await Language.getFallback().t('commands.general.disabled'), {
reply_parameters: {
message_id: ctx.message.message_id,
allow_sending_without_reply: true
}
});


А как под каптом работает этот метод?
let job = await this._sendQueue.add(name, {id, text, extra, target}, {priority});
job = await job.waitUntilFinished(this._sendQueueListener);
return job.returnvalue;


Увидели проблему? Если нет, то не бойтесь, я тоже её не замечал пока она не воспроизвелась. await - корень нашего зла. Когда куча воркеров и ещё большая куча потоков внутри них начинают отправлять сообщения одновременно, согласно рейтлимитам очередь начинает троллить отправку, А НАШИ ПОТОКИ ЖДУТ ОТВЕТ ТЕЛЕГИ. В итоге у нас получается боттлнек когда из-за количества отправляемых сообщений, мы теряем в скорости обработке входящих. И это кстати случилось, но к счастью и удивлению - ночью.
Подкрепил в пост графики которые позволили нам обнаружить этот косяк. Вот так вот, порой ошибок от сервиса нет, но если глянуть график - понимаешь что ошибка есть, и это ты 😢

#updates
  • 🤔 20
  • 💋 4
  • ❤ 2
  • 🫡 2
  • ❤‍🔥 1
  • 🔥 1
More from @sleeplesscode
  1. Oct 2, 2026⚡️ JavaScript, архитектура и ИИ: о чем будут говорить на юбилейной HolyJS 2026 Autumn 📆 2…
  2. Oct 1, 2026Post #914
  3. Sep 18, 2026Post #913
  4. Sep 17, 2026Post #912
  5. Sep 15, 2026Post #911
  6. Sep 14, 2026Post #909
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →