169 похожих чатов

Https://Pastebin.Com/DugNGmyP Кто-То может подсказать Почему код после 24 строки не исполняется?

47 ответов

44 просмотра

Код конечно ужасный, но если по существу, скольким юзерам идёт рассылка?

Виктор Супрун
7r

блять блять блять

Виктор-Супрун Автор вопроса
Aleksandr Danilov 🇺🇦
блять блять блять

Закидайте меня палками Но дайте понять Где я все ломаю

кто то еще юзает .format? ого...

Виктор Супрун
Закидайте меня палками Но дайте понять Где я все л...

Проблема в том что эту хуйню нет смысла чинить Надо писать заново

PLATINA
кто то еще юзает .format? ого...

Тебя только это смутило? И что в format такого?

Mikhail Smolnikov
Тебя только это смутило? И что в format такого?

не только, я просто его заметил. ну типо не проще дописать f перед строкой и не париться?

Почему global couter

Виктор Супрун
Закидайте меня палками Но дайте понять Где я все л...

Ты запускаешь 7 тысяч задач "параллельно" на одном ядре, в каждой из которых ждёшь от 0 до 8 секунд и что-то ещё отправляешь Всё хорошо продумал?

PLATINA
не только, я просто его заметил. ну типо не проще...

Не всегда это приемлимо Это не совсем одно и тоже

Виктор-Супрун Автор вопроса
Mikhail Smolnikov
Ты запускаешь 7 тысяч задач "параллельно" на одном...

Если говорить не о 7к паралельных задач А то что происходит дальше Почему исполнение функции не закрывается?

Semyon Bagrych
screenshot

https://t.me/aiogram_ru/1247796

PLATINA
а чем разница? обьясните если тупой

_ = gettext f"{_("hello")} "{}".format(_("hello")) В первом случае gettext вызовется один раз при инициализации Во втором случае будет вызываться каждый раз

await write_to_file(data_user) Это как ?

Виктор-Супрун Автор вопроса
Тері
await write_to_file(data_user) Это как ?

После 24 строки код не исполянется Какая разница что в 26?

Виктор Супрун
На 8 штук оптравило

Тогда https://t.me/aiogram_ru/1249647

Тері
await asyncio.gather(*coros) Так он ждёт

Если это рассылка то залупа а не совет

Виктор-Супрун Автор вопроса
Тері
Тогда https://t.me/aiogram_ru/1249647

Друг Все проще оказалось в user.id_user none уходило Ошибка останавливала исполнения этого говнокода Всем спасибо Хорошего вечера

jeremy
Можно пояснения? Привет!

По лимитам обосреться до 100

Patrick [in search of work]
По лимитам обосреться до 100

А если распределить запуск тасков по времени? В случае достижения определенного значения - переносить таску в конец выполнения.

Виктор-Супрун Автор вопроса
Тері
У тебя user_id может бить None ?

Оказывается да Не я писал Фиксы прост

jeremy
А если распределить запуск тасков по времени? В сл...

Может тогда лучше последовательно соблюдая лимиты и не париться?😁

Patrick [in search of work]
Может тогда лучше последовательно соблюдая лимиты ...

Ну смотри. Если у тебя малое количество юзеров, то в общем смысле ты и циклом пройтись можешь, там очень тяжко попасть под лимиты. Но предположим, тебе необходимо сделать рассылку на большое количество юзеров, и чтобы тебя удовлетворяло время отправки. Как тогда ускорить отправку сообщений рассылки?

jeremy
Ну смотри. Если у тебя малое количество юзеров, то...

На любое. Лучше последовательно и не спеша. Что бы боту не мешать. Лучше одному человеку сообщения из рассылки прийдёт на 3-5секунд позже(он его не ждёт) чем не прийдёт человеку который сейчас пользуется ботов и ждёт сообщение

Patrick [in search of work]
На любое. Лучше последовательно и не спеша. Что бы...

У меня приходит оповещение о погрешностях. Оно может приходить часто, но само оповещение нужном не всем. Предполагаем, что оно приходит каждый час, всего пользователей порядка 5 тысяч. Чисто технически, если последовательно отправлять, то они не увидят вовремя нужное оповещение. Я не про рекламные рассылки и т.д. и т.п., а о тех, на которых и построена логика самого бота.

Patrick [in search of work]
Ну тут земля пуховиком. Лимиты тг.

Мы хотим отправлять 2 раза в секунду. Ты можешь контролировать с погрешностью в районе 5% при ок соединении количество отправленных ботом сообщений. Мы загоняем таску под сон так, чтобы упорядочить все отправления пользователям при скорости 2msg/s. И перед тем, как отправить сообщение пользователю, ты проверяешь количество отправленных ботом сообщений. Если они уже 20+, то перетаскиваешь таску в конец костыльной очереди. Мы прогоняли пару раз такой костыльный код, с нагрузкой, ни разу не выкинуло за лимит. НО: 1) это явно не верный подход, так как такие задачи каким-либо образом уже решались за счет мб Celery и т.д.; 2) каждая таска запускается одновременно фактически, а это значит, что при N кол-ве рассылок, у тебя изначально будет N одновременно запущенных функций, однако со скорость кол-ва отправок в секунду оно будет уменьшатся.

jeremy
Мы хотим отправлять 2 раза в секунду. Ты можешь к...

А что если таска будет попадать за те 20+ несколько раз подряд с длинной очередью?

jeremy
при каких ситуациях мы это допускаем?

Да любых. Много людей пользуется ботом сейчас

Patrick [in search of work]
Да любых. Много людей пользуется ботом сейчас

Ну так смотри. Каждый раз, когда пользователь получает сообщение от бота, мы ведь можем это фактически посчитать. Разве нет?

Patrick [in search of work]
И что нам это даст?

Подсчет запросов в тг, чтобы не улететь в лимиты

Patrick [in search of work]
И что нам это даст?

Если мы знаем количество уже отправленных сообщений пользователям, то мы ведь можем это проверять при отправке сообщения-уведомления. Разве нет?

jeremy
Если мы знаем количество уже отправленных сообщени...

Так это твои 20+ ещё меньше будут и в конец тачки будут улетать чаще

Patrick [in search of work]
Так это твои 20+ ещё меньше будут и в конец тачки ...

Мы провели тесты при разных нагрузках и разных возможных ситуациях. Погрешность в 4,63% в среднем при 17 разных проверках. Грубо говоря, предполагали 300 секунд отправки полной, но за 312 секунд +- все отправлялось.

Mikhail Smolnikov
Подсчет запросов в тг, чтобы не улететь в лимиты

Ты выше указал человеку на 7к "параллельных" функций. Насколько это критично по итогу?

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
1
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Карта сайта