
Alexander
28.12.2016
07:14:02
неправильно хотеть распределять их по часам
потому что эффективность получения писем в разные часы суток разная
и конверсия будет лучше в какое-то время
а в какое-то хуже

Google

Alexander
28.12.2016
07:14:30
тут лучше в часы пик поднимать доп серверы
а потом удалять

Max
28.12.2016
07:14:37
а нам не надо вот прям щаз всем прислать месаги, есть временные рамки для этого, на конверсию не повлияет
Грубо говоря пушка из серии у вас рядом с домом появилась акция в магазине бла бла бла

Alexander
28.12.2016
07:15:13
а, понял

Max
28.12.2016
07:15:27
то есть когда клиент её получит не важно
если акция онлайновая то вообще похеру

Vladimir
28.12.2016
07:15:58

Max
28.12.2016
07:16:20
Опсно в прокете очереди через кролика ходят, но он явно не подходит под задачу и даже если справится в однонодовом режиме как-то, то в случае с кластером он тупо упадёт

Alexander
28.12.2016
07:16:48
ну вот та же кассандра - там хорошие показатели скорости записи в неё
я не знаю, но, наверное, норм выбор
туда можно сразу кучу разных писем закинуть и даты отправки

Google

Max
28.12.2016
07:17:41
да. пожалуй надо поточнее задачку сформулировать

Alexander
28.12.2016
07:17:43
а потом оттуда выбирать эти письма по датам и удалять

Max
28.12.2016
07:17:51
как минимум на тему что там лежать будет
тупой вопрос
как Celery хранит очередь?

Артур
28.12.2016
07:18:59

Vladimir
28.12.2016
07:19:52

Alexander
28.12.2016
07:22:05
Redis as a broker won’t perform as well as an AMQP broker, but the combination RabbitMQ as broker and Redis as a result store is commonly used. If you have strict reliability requirements you’re encouraged to use RabbitMQ or another AMQP broker. Some transports also uses polling, so they’re likely to consume more resources. However, if you for some reason aren’t able to use AMQP, feel free to use these alternatives. They will probably work fine for most use cases, and note that the above points are not specific to Celery; If using Redis/database as a queue worked fine for you before, it probably will now. You can always upgrade later if you need to.


Alexey
28.12.2016
07:22:41
Коллеги. Собственно есть задачка.
В системе периодически происходят события, которые вызывают здоровенную пуш рассылку и шлют кучищу писем на почту. Сидим вот голову ломаем, как кошернее всего сделать очередь для всей этой херни. Может кто поделится опытом?
напишу про имейлы, но для пушей тоже сойдёт, система постит события в сервис занимающийся рассылками, сервис генерит персонализированные события(например с кастомным именем польщователя и unsubscribe ссылкой) в очередь(для каждой компании своя очередь со своим приоритетом), воркеры разгребают очереди в порядке приоритетов (например 2fa/сброс пароля имеют наибольшие приоритеты, а возможно и отдельный пул воркеров вообще) и отсылают письма. По удачному завершению отправки, помечают событие как actioned в базе.
Как разгребать те события которые не удалось обслужить (скорее всего баг в воркере или 3rd party api упал) — зависит от задачи, гдето exponential-backoff re-enqueue, гдето пререотправка через другого провайдера, гдето дроп.
Какие технологии выбирать, дело ваше, Celery-хуелери, MySQL-хуескьюэл. Кафка-... ну вы поняли.


Max
28.12.2016
07:23:26
Это примерно понятно всё

Артур
28.12.2016
07:23:34
Блин чуствую себя удовлетворенным дегродом ?
Потому как кодил на си, потом пересел на пых (исторически) и сейчас никуда не дергаюсь уже лет 10

Max
28.12.2016
07:24:12
пхп не деградация, пхп это пхп

Alex
28.12.2016
07:24:33
Пхп это ассемблер

Max
28.12.2016
07:24:35
деградация, это если ты пишешь на пхп то что пхп писать не надо, например сложную бизнесс логику

Alex
28.12.2016
07:24:37
По типу джаваскрипта

Alexander
28.12.2016
07:24:38
напишу про имейлы, но для пушей тоже сойдёт, система постит события в сервис занимающийся рассылками, сервис генерит персонализированные события(например с кастомным именем польщователя и unsubscribe ссылкой) в очередь(для каждой компании своя очередь со своим приоритетом), воркеры разгребают очереди в порядке приоритетов (например 2fa/сброс пароля имеют наибольшие приоритеты, а возможно и отдельный пул воркеров вообще) и отсылают письма. По удачному завершению отправки, помечают событие как actioned в базе.
Как разгребать те события которые не удалось обслужить (скорее всего баг в воркере или 3rd party api упал) — зависит от задачи, гдето exponential-backoff re-enqueue, гдето пререотправка через другого провайдера, гдето дроп.
Какие технологии выбирать, дело ваше, Celery-хуелери, MySQL-хуескьюэл. Кафка-... ну вы поняли.
мне нравится подход)

Старый
28.12.2016
07:24:39

Alex
28.12.2016
07:24:51
Как и Си, тащемта

Google

Alexander
28.12.2016
07:25:02

Alexey
28.12.2016
07:25:17

Max
28.12.2016
07:25:20

Vladimir
28.12.2016
07:25:40

Max
28.12.2016
07:25:53
мы как раз сейчас пытаемся с пхп снять кучу задач

Alexey
28.12.2016
07:26:17
(забей, я по привычке набросил=) я щас вааще хз как без folly писать =))))

Vladimir
28.12.2016
07:26:55
Кстати еблоб показательный пример почему надо было писать на плюсах

Alex
28.12.2016
07:27:07

Vladimir
28.12.2016
07:27:19
Потому что код его выглядит так словно человек вот прям очень хотел плюсы
Прям очень очень
Но ему что то не позволило их взять

Артур
28.12.2016
07:27:47
Кстати, вот забавное наблюдение. Сам учился на обджект паскале (аля Делфи), и когда пресел на Си++, каждый раз остро реагировал на холивары. Прошло 10 лет. И теперь я реагирую на рассуждения о языках - как на светский разговор ?

Alexander
28.12.2016
07:27:49
мы как раз сейчас пытаемся с пхп снять кучу задач
может быть я скажу неправильную вещь, но а вот просто в какой-нибудь Postgres нельзя? оно уже не выдерживает так?.. просто если там мало - то это проще всего, никаких лишних сервисов поднимать не нужно
ну, а потом переделать, когда будет потребность в этом
если будет

Max
28.12.2016
07:28:17
постгрес мне кажется немного не про то

Alexey
28.12.2016
07:28:21

Alexander
28.12.2016
07:28:33
ну, сделать таблицу с jsonb и храни там что хочешь

Vladimir
28.12.2016
07:29:01

Alexander
28.12.2016
07:29:06
зато нет дополнительных операционных затрат на поддержку других микросервисов

Google

Max
28.12.2016
07:29:13
лан, пока не будем пальцем в небо тыкать, подожду адекватного тз

Alexey
28.12.2016
07:29:17

Vladimir
28.12.2016
07:29:39

Alexey
28.12.2016
07:30:05
не оригинальный автор, хнык хнык хнык ='(

Alex
28.12.2016
07:30:58

Дмитрий
28.12.2016
07:32:51

Артур
28.12.2016
07:33:20
Не, теперь уже нет. Реакция как у забора ?

Дмитрий
28.12.2016
07:34:10
Тю, какой же светский разговор без мордобоя

Admin
ERROR: S client not available

Max
28.12.2016
07:34:37
а что нынче морды не только на свадьбах бить принято?
/me выпал из реальности

Артур
28.12.2016
07:34:48

Max
28.12.2016
07:35:46
https://www.youtube.com/watch?v=JSxNW5dDYEY&spfreload=10
3 дня до нг, можно и поспамить )

Артур
28.12.2016
07:37:24
Раньше моробой интересен был, были как-то аргументы типа:
- Сударь, а понюхайте носом мой кулак. Правда шикарно.
- Не спорю. Ну тогда извольте посмотреть и на мой кулак, поближе так. ?
И люди могли устоять на своих двух
А теперь ни аргументов, почему язык говно, ни удержаться на ногах не могут ?

Max
28.12.2016
07:40:07

Google

Артур
28.12.2016
07:40:23
В подъезде ?

Max
28.12.2016
07:40:44
тогда надо нажраться перед концертом

Nick
28.12.2016
08:05:35

Vladimir
28.12.2016
08:05:59

Nick
28.12.2016
08:06:11
Несчастным

Alex
28.12.2016
08:07:48
Да не
На плюсах писать normique
Там все уже для Белого человека

Nick
28.12.2016
08:08:11
Я делал это 5 лет назад и был подавлен

Alex
28.12.2016
08:08:12
Даже Хиндли и Милнер
Я все время подавлен

Max
28.12.2016
08:08:48
тут поступило уточнение
json с описанием пушки и массив токенов длинной до 152 символов в количестве 1000 штук "в идеале"
это одно сообшение
таких сообщений в очереди на отправку может быть до 5 десятков
Сопсно таск то не маленький получается

Daniel
28.12.2016
08:15:34
очень маленький

Vladimir
28.12.2016
08:19:35
@ndvas выбирая из сей и плюсов нет причин не выбрать плюсы. Особенно с учетом того что хороший сишный код выглядит так словно автор хотел взять плюсы

Daniel
28.12.2016
08:20:16
у плюсов ровно одна проблема
или ты знаешь проект досконально, или ты вообще не понимаешь, что происходит, а просто лепишь темплейты на темплейты

Max
28.12.2016
08:21:43

Daniel
28.12.2016
08:22:13
посоветовать под какую задачу?