
Игорь
14.02.2017
19:50:52
помнится для джаббера вообще в один поток все гоняли. И не парились, и работало все шустро, на сколько позволял канал и сервер

Artem
14.02.2017
19:50:59
если не связывать их никак, то легко получится масштабировать любую часть

Маришка
14.02.2017
19:51:03
а что с интерваллом который юзверь задаёт

Artem
14.02.2017
19:51:07

Google

Artem
14.02.2017
19:52:04
не знаю, мб и на 3 - принимает инфу от юзеров, включая изменения конфигурации, рассылает юзерам согласно конфигурации и собирает инфу с рсс

Маришка
14.02.2017
19:52:25
так более муторно и больше кода уже выйдет

Artem
14.02.2017
19:52:33
ой ли

Игорь
14.02.2017
19:53:24
нефик плодить сущности

Artem
14.02.2017
19:54:47
Рассылка и сбор разные вещи, сбор завязан на события, приходящме извне, рассылка - на собственные

Alexey
14.02.2017
19:54:54
Давайте ещё базу воткните, очереди запилите, микросервисы и на каждый по контецнеру

Artem
14.02.2017
19:55:08
Так да, между ними база

Игорь
14.02.2017
19:55:36

Сергей
14.02.2017
19:55:38

Alexey
14.02.2017
19:55:39
Мб просто подскажете человеку как сделать как хочет она?)

Artem
14.02.2017
19:55:44
Сложность-то при этом не увеличивается

Игорь
14.02.2017
19:56:48

Google

Сергей
14.02.2017
19:56:51

Artem
14.02.2017
19:56:52
Это все нужно будет многожды перезапускать без потери данных
Конечно нужна база

Игорь
14.02.2017
19:57:56

Artem
14.02.2017
19:58:05
Можно, но это тоже база
Просто хреновая

Игорь
14.02.2017
19:58:26
все зависит от нагрузки

Artem
14.02.2017
19:58:44
Ну может быть и не хреновая, а такая же)
Всегда синкаемся с файлом при изменении конфига

Сергей
14.02.2017
19:59:07
в json ты всегда будешь вынужден загружать всё, даже если тебе нужно только две записи.

Artem
14.02.2017
19:59:21
Без нагрузки это сработает
У меня был такой бот

Игорь
14.02.2017
19:59:30

Сергей
14.02.2017
19:59:43
ну и в итоге в чём профит?

Artem
14.02.2017
19:59:43
На 150 юзеров примерно, все работало ок.

Сергей
14.02.2017
20:00:00
сложность та же, по скорости - хуже.

Artem
14.02.2017
20:00:16
Но это тоже база, с тем же скулайтом никакой разницы

Nikolay
14.02.2017
20:00:44

Игорь
14.02.2017
20:00:50

Сергей
14.02.2017
20:01:24
ну да. и память давай не экономить, на серверах куча её.

Google

Игорь
14.02.2017
20:03:37

Сергей
14.02.2017
20:05:04
ну вот процес лишний - это лишние сущности, а куча файлов, гемор с хранением фидов, вместо одного небольшого файла sqlite - это нормально :)

Artem
14.02.2017
20:05:05
В чем разница с монгой?

Сергей
14.02.2017
20:05:25
если там данных на 100 кб, то вообще пофиг где и как хранить.

Eldar
14.02.2017
20:06:14

Игорь
14.02.2017
20:06:32

Сергей
14.02.2017
20:07:16
я просто не могу понять в чём смысл и профит использования текстовых файлов вместо компактной базы данных

Маришка
14.02.2017
20:07:39
?!?
def post_on_channels(_content):
for channel in channels:
bot.sendMessage(channel, _content)
await asyncio.sleep(interval)

Nikolay
14.02.2017
20:08:16

Игорь
14.02.2017
20:08:25

Eldar
14.02.2017
20:08:28

Игорь
14.02.2017
20:08:47

Nikolay
14.02.2017
20:09:04

Eldar
14.02.2017
20:09:52
bot.sendMessage(channel, _content) по моему и эту штуку не плохо было бы сделать асинхронной

Игорь
14.02.2017
20:10:28

Сергей
14.02.2017
20:10:29

Eldar
14.02.2017
20:11:48
оно и так асинхронно
разве?
вроде как эти две строки
for channel in channels:
bot.sendMessage(channel, _content)по другому надо написать чтобы было асинхронно

Сергей
14.02.2017
20:13:27

Игорь
14.02.2017
20:14:12

Google

Nikolay
14.02.2017
20:14:30
типа так:
async def post_shit(channel, timeout):
while True:
post(channel, “shit”)
await asyncio.sleep(timeout)
async def schedule(workers):
await asyncio.gather(workers)
if __name__ == “__main__”:
loop = asyncio.get_event_loop()
workers = [post_shit(c, t) for c, t in CHANNELS]
loop.run_forever(schedule(workers))

Eldar
14.02.2017
20:14:35
не ну так то можно и простым списком сделать, потом заюзать генератор c gather

Nikolay
14.02.2017
20:14:54
именно это и предложил
а там люди процессы какие-то хотят спавнить

Eldar
14.02.2017
20:15:18
post(channel, “shit”) вот это желательно должно быть асинхронным

Nikolay
14.02.2017
20:15:38
я почти уверен, что пока нет

Игорь
14.02.2017
20:16:11

Admin
ERROR: S client not available

Игорь
14.02.2017
20:16:23
хотя. вроде уже переписывали

Nikolay
14.02.2017
20:16:25

Маришка
14.02.2017
20:16:33
telepot имеет разные версии ботов, обычный и асинхронный так что тут особо можно не парится

Eldar
14.02.2017
20:16:35
await asyncio.sleep(timeout) кажется что и это лишнее

Игорь
14.02.2017
20:16:38
надо сырки смотреть

Nikolay
14.02.2017
20:16:53
не, ну там проде можно через таймаут, как в джаваскрипте
но так императивней и без коллбэк хелла

Eldar
14.02.2017
20:18:17
поэтому и задержки не нужны

Google

Nikolay
14.02.2017
20:18:45

Маришка
14.02.2017
20:19:00
ну да

Игорь
14.02.2017
20:19:08

Nikolay
14.02.2017
20:19:11
ну тогда перенести таймаут внутрь schedule
и цикл бесконечный

Eldar
14.02.2017
20:20:05

Nikolay
14.02.2017
20:20:13
в любом случае, код сложнее не станет
не надо никаких трех процессов, вот, две функции и все

Сергей
14.02.2017
20:21:20
ты сейчас в двух функциях описал одну часть задачи :) рассылку. А нужно ещё принимать сообщения от пользователя и парсить фиды.

Nikolay
14.02.2017
20:21:38

Сергей
14.02.2017
20:22:43
Простые. по отдельности. Запихни сейчас всё это в своё решение и посмотри, не проще ли будет всё сделать отдельными сервисами. Особенно когда нагрузка пойдёт :)

Nikolay
14.02.2017
20:23:29
просто спавним несколько тасков и все
периодических
еще вопрос, какой код большую нагрузку выдержит

Сергей
14.02.2017
20:25:12
А теперь представь, что парсинг не быстрый, фидов - 500 штук и пользователей у тебя уже 1500. Реально считаешь, что один процес с асинхронщиной будет справляться быстрее трёх с учётом многоядерности?

Nikolay
14.02.2017
20:25:50
если рассылка пользователям делается параллельно, а парсинг фида занимает сильно меньше времени, чем промежуток между рассылками (а это, скорее всего так), то то, что они бегут в одном эвентлупе - вообще не проблема
и да, оно будет быстро

Eldar
14.02.2017
20:27:11

Nikolay
14.02.2017
20:27:28

Сергей
14.02.2017
20:27:31
вот в этом и проблема - сплошные допущения и если. а если справляться перестанет - как масштабировать будешь?