@ru_python

Страница 647 из 9768
Serb
02.05.2016
23:05:26
Так, это всё отлично, но я спать. Спасибо за советы, Паша, Артем, Алекс, всем спок!

Sergey
02.05.2016
23:05:59
Ну и последний вопрос: как обрабатывать быстро много поступающих сообщений/обновлений? Мне нужно быстро отправить ответ юзеру и записать в БД его меседж.

Google
[Anonymous]
02.05.2016
23:07:14
А вообще если это по поводу бота в телеге - то лучше вебхуки привязать.

Чем дёргать getUpdates.

Sergey
02.05.2016
23:09:26
А вообще если это по поводу бота в телеге - то лучше вебхуки привязать.
Да, это бот и мне нужно с помощью него пересылать меседжи от юзера к юзеру, они как бы пишут друг друггу, но через бота, попутно сохраняя все это в БД.

[Anonymous]
02.05.2016
23:09:48
Тем более через очереди пусти, тебя же положить могут.

Sergey
02.05.2016
23:09:52
Через очередь пусти.
Записал, завтра изучу. Спасибо.

[Anonymous]
02.05.2016
23:10:06
Соединение с базой не открывай на приёме.

Я 5000 сообщений боту отправлю.

И он упадёт.

[Anonymous]
02.05.2016
23:10:23
Fire and forget.

Sergey
02.05.2016
23:11:45
Т.е. мне нужно все обновления закидывать в очередь. А как вообще реализуется очередь и как её обрабатывать?

Artem
02.05.2016
23:11:59
LPUSH -> BLPOP
Собственно, вот так

Google
[Anonymous]
02.05.2016
23:12:04
Собственно, вот так
Только BRPOP, я ошибся.

LPUSH - пульнуть в список слева.

BRPOP - взять справа.

Artem
02.05.2016
23:12:30
Ну да, или RPUSH

[Anonymous]
02.05.2016
23:12:31
А то если LPUSH BLPOP - это FIFO.

А то "хвост" собираться будет.

?

Ещё нужно смотреть в сторону BRPOPLPUSH.

Если у тебя какие-то вычисления которые могут оборваться.

Roman
02.05.2016
23:13:58
Artem
02.05.2016
23:13:59
Т.е. мне нужно все обновления закидывать в очередь. А как вообще реализуется очередь и как её обрабатывать?
Один воркер принимает сообщения и пушит в очередь, другой их оттуда достает и обрабатывает

[Anonymous]
02.05.2016
23:14:24
?

Но это потому что дохуя обновлений приходит.

Один тупо не справляется.

Например флуд какой-то идёт и у тебя и очередь может заткнуться.

А популярных ботов часто спамят.

Я видел как некоторые собирают всех ботов в одну группу.

Google
[Anonymous]
02.05.2016
23:15:12
И начинают спамить.

Artem
02.05.2016
23:15:16
А юзаешь какой-то фреймворк ботовый?

[Anonymous]
02.05.2016
23:15:18
Это вроде как чтобы всех сразу положить.

А юзаешь какой-то фреймворк ботовый?
Они не нужны, я вообще не понимаю их смысл.

Sergey
02.05.2016
23:15:34
А юзаешь какой-то фреймворк ботовый?
https://github.com/eternnoir/pyTelegramBotAPI

[Anonymous]
02.05.2016
23:15:34
Bot API элементарное.

sendMessage я могу отправить без фреймворка.

Зачем фреймворк - не ясно.

Sergey
02.05.2016
23:16:09
Зачем фреймворк - не ясно.
Мне в указанном выше нравится обработка сообщений с помощью декораторов

[Anonymous]
02.05.2016
23:16:20
К тому же я уверен, что там объектно-ориентированный интерфейс.

Это ещё к overhead'у.

[Anonymous]
02.05.2016
23:16:41
А мне (лично мне) нужно просто сообщения в очередь прохуяривать.

Как можно быстрее.

Видоизменяя входящий массив только минимально.

Т.е. я сообщения обрабатываю по сути уже в демоне.

Который с очередями работает.

А endpoint "голенький".

Там только persistent соединение с Redis и минимальная обработка входных.

(чтобы мусор не попал на всякий случай)

Google
[Anonymous]
02.05.2016
23:18:58
Я подумываю даже минимальную обработку перенести тоже на воркер, чтобы максимально снизить любые нагрузки на endpoint.

Кстати сообщения отправляются не из воркера, а прямо с endpoint'a, потому что, опять же, скорость.

Sergey
02.05.2016
23:19:26
Резюмируем: - все входящие в очередь отдельным воркером - несколько воркеров для обработки сообщений из очереди - из очереди же сообщения попадают в постоянное хранилище

[Anonymous]
02.05.2016
23:19:26
Пока он долетит в очереди - пройдёт секунда, может две.

Python для обработки данных позволяет создавать по процессу на ядро.

Через multiprocessing или multithreading я уже не помню.

Вот я как раз создаю по воркеру на ядро.

Admin
ERROR: S client not available

Sergey
02.05.2016
23:20:32
Есть еще threading

Вот я как раз создаю по воркеру на ядро.
Можно ли как то приблизительно понять какой сервер мне понядобится?

Roman
02.05.2016
23:21:20
[Anonymous]
02.05.2016
23:21:45
Можно ли как то приблизительно понять какой сервер мне понядобится?
Смотря сколько тебе запросов в секунду обрабатывать нужно.

Roman
02.05.2016
23:21:55
треды ускорят вас только на i/o

[Anonymous]
02.05.2016
23:21:57
У меня просто только большие железяки, я не измерял на маленьких.

Roman
02.05.2016
23:22:06
http://geekforbrains.com/post/after-a-year-of-nodejs-in-production

Sergey
02.05.2016
23:22:11
Предпологается пока что около 1000 юзеров/сутки

[Anonymous]
02.05.2016
23:22:32
Предпологается пока что около 1000 юзеров/сутки
Я столько в минуту принимаю примерно, чуть меньше.

Artem
02.05.2016
23:22:39
Лол, а мы тут уже придумали хайлоад

Sergey
02.05.2016
23:22:41
http://geekforbrains.com/post/after-a-year-of-nodejs-in-production
Нет, спасибо:) Не люблю javascript, после python хочу изучить СИ

Google
Roman
02.05.2016
23:22:44
наш скромный бот проверяет кучу всего на вирусы.

[Anonymous]
02.05.2016
23:22:51
1000 юзеров в сутки выдержит обычный VPS.

Я думаю.

Это мало же.

Sergey
02.05.2016
23:23:25
1000 юзеров в сутки выдержит обычный VPS.
Обычный это 2х-4х ядерный, сколько ОЗУ?

Artem
02.05.2016
23:23:32
Предпологается пока что около 1000 юзеров/сутки
Вообще можешь забить на очереди с таким количеством юзеров

[Anonymous]
02.05.2016
23:23:40
Обычный это 2х-4х ядерный, сколько ОЗУ?
Для 1000 пользаков в сутки я думаю хватит 1-2 GB RAM.

Sergey
02.05.2016
23:23:44
Это мало же.
Для меня много пока что:)

[Anonymous]
02.05.2016
23:23:45
Скорее и 1 хватит.

Там ОЗУ не нужно.

Тебе процессор нужен.

Ты будешь с базой работать.

Я забыл.

Так что оперативка тебе в принципе особо не нужна.

А вот процессор и т.д. - очень важно.

Roman
02.05.2016
23:24:19
зачем там cpu?

[Anonymous]
02.05.2016
23:24:22
зачем там cpu?
MongoDB и MySQL жрут CPU как ссаные мрази.

MongoDB вообще любит на 100% по рандому забивать процессор.

Какой ему понравится.

Sergey
02.05.2016
23:24:56
Вообще можешь забить на очереди с таким количеством юзеров
А если все 1000 будут сразу писать друг другу через бота? + задача есть предусмотреть масштабируемость в будущем при возрастании нагрузки

Страница 647 из 9768