Александр
а кто что скажет про aerospike?
подписался на коменты
Tishka17
ну вроде как redis держит десятки тысч запросов на incr
Tishka17
мне явно хватит на несколько лет
Pavel
но вообще разве кликхаус не ровно для этого? (я хз, предполагаю)
не только для этого, но для этой задачи подходит идеально
Pavel
ну у меня не так много данных
а вот это + большая нагрузка уже не совсем про кх (хотя 2-3к кпс можно выжать на некоторых кейсах)
Mike
а кто что скажет про aerospike?
Он же на чтение оптимизирован вроде, а тебе писать на вид чаще надо
Tishka17
ну мне читать и писать одновременно, да
Alexander
не только для этого, но для этой задачи подходит идеально
кликхаус плох для вставки одной записи только
Oleg
судя по всему баг какой-то, в3.6.6 ещё работало, в3.6.8 уже нет. проверь по чейнджлогам между ними и заводи баг
Вообще надо использовать asyncio.run(main()) если это 3.7, либо явно финализировать асинхронный генераторы вызовом: loop.run_until_complete(loop.shutdown_asyncgens()) если это питон < 3.7
Alexander
он про пачки
Oleg
asyncio.run автоматически финализирует генераторы
Pavel
кликхаус плох для вставки одной записи только
накапливать перед инсертом же можно
Pavel
была еще какая-то ин-мемори хрень поверх кассандры (но Тишке кассандру не согласуют)
Pavel
ignite или как то так
Tishka17
короче редис похоже самое то
Tishka17
https://redis.io/topics/benchmarks
Tishka17
тем более у меня уже редис в проекте есть
Oleg
была еще какая-то ин-мемори хрень поверх кассандры (но Тишке кассандру не согласуют)
тащить в прод кассандру ради небольшого кол-ва счетчиков - это безумие имхо
Tishka17
ну как небольшого, сотни
Tishka17
в принципе небольшое, да
Oleg
с asyncio.run(main()) тоже не работает
Ну похоже на баг в питоне
Je
ну как небольшого, сотни
счетчики на редисе это отличное решение, использовал и синкал с постгре по крон-джобе
Tishka17
наверно я даже не буду синкать
Je
а что за счетчики, не лайки случаем?)
Tishka17
даже не лайки, меньше штук
Tishka17
хотя лайки наверно реже происходят
Je
а зачем синкал?
ну чтоб не включать appendonly и не писать огромный лог redis’а и не потерять данные в случае перезапуска - взять из постгре
Mike
Просмотр происходит всегда, лайк только если кнопку нажали
Oleg
с asyncio.run(main()) тоже не работает
Попробуй так try: loop.run_until_complete(main()) finally: loop.run_until_complete(loop.shutdown_asyncgens()) loop.close()
Je
эм, в случае перезапуска редиса?
там была сложная бизнес-логика, просто перезапуск он с диска восстановит, было желание пересчитывать, я так понимаю косистентное sql хранилище нередко используют вкупе с чем-то быстрым и менее надежным
Oleg
странно, что @Tishka17'е никто еще не предложил tarantool
Tishka17
Попробуй так try: loop.run_until_complete(main()) finally: loop.run_until_complete(loop.shutdown_asyncgens()) loop.close()
а почему не работает так: async def inner(): async for obj in get_obj(): raise Exception(1) async def main(): try: await inner() except Exception: pass ?
Je
странно, что @Tishka17'е никто еще не предложил tarantool
а cockroachdb был? тред не читал, но рекомендую)
Oleg
да, это действительно работает
Вообще если не использовать 3.7 и asyncio.run, то надо так всегда писать, чтобы все правильно финализировалось
Oleg
а cockroachdb был? тред не читал, но рекомендую)
реляционку для счетчиков? не жирно ли?
Oleg
кстати кто-нибудь юзает cockroach в проде под нагрузкой?
Tishka17
Попробуй так try: loop.run_until_complete(main()) finally: loop.run_until_complete(loop.shutdown_asyncgens()) loop.close()
тогда контекстные менеджеры буду закрываться при завершнии проги только, а по идее должны сразу
Pavel
странно, что @Tishka17'е никто еще не предложил tarantool
мне больше странно, что не предложили постгрес с тейблспейсом в рамдиске :)
Je
реляционку для счетчиков? не жирно ли?
она же не реляционка, она подражает интерфейсу емнип >CockroachDB is a distributed SQL (“NewSQL”) database built on a transactional and strongly-consistent key-value store.
Vladimir
Cockroach отличное название. Второй день балдею, то pidora, то pyderasn, кто хлеще)
Pavel
Cockroach отличное название. Второй день балдею, то pidora, то pyderasn, кто хлеще)
на нашей планете человечество сейчас использует порядка 2к живых языков и диалектов, и насчитывается около 6к мёртвых. Любое звукосочетание хотя бы на одном из них будет звучать крайне сомнительно
Bogdan (SirEdvin)
Так предложили бы уже тогда tikv
Bogdan (SirEdvin)
https://tikv.org/
Vladimir
и диалектов. чем вы читаете? :)
2к языков и диалектов, 6к мертвых. Ладно, я там невнимательно прочитал про языки, но тем не менее откуда цифра?? И как считали мертвые
Oleg
тогда контекстные менеджеры буду закрываться при завершнии проги только, а по идее должны сразу
Так изначально была проблема что при выходе из loop'а не выполняется __aexit__. Если внутри корутины будет обрабатываться этот эксепшен, то и проблем с __aexit__'ом у @enotyoyo не было бы
Vladimir
Tishka17
выше
Oleg
ну выполняться он, по-идее, должен не сразу, а когда GC его вычищает
Tishka17
в смцысле не сразу, exit должен при выходе выполняться, не?
Tishka17
тем более счетчик ссылок
17
Как сделать многопоточность, чтобы не запускалось в новом процессе?
17
В диспетчере задач
Oleg
есть еще pedis
Имлементация redis'а поверх ScyllaDB звучит захватывающе
Andrew
в смцысле не сразу, exit должен при выходе выполняться, не?
он выполнится если присутствует в стеке
Vladimir
c ethnologue.com, конечно же
Так по их заявлению языков вообще больше Find, read about, and research the world's 7,111 known living languages.
Pavel
Так по их заявлению языков вообще больше Find, read about, and research the world's 7,111 known living languages.
ну там учитываются даже языки, на которых говорит 3.5 анонимуса
Oleg
в смцысле не сразу, exit должен при выходе выполняться, не?
У тебя же exception случается выше по стэку
Eldar
Имлементация redis'а поверх ScyllaDB звучит захватывающе
не поверх сцилы же, а они юзают тот же фреймворк, что и сцила
Oleg
не поверх сцилы же, а они юзают тот же фреймворк, что и сцила
Так было раньше, но они, вроде, недавно начали использовать scylla в качестве бэкенда
Oleg
Pedis will be constructed based on Scylla
Je
не, сочетать вроде звучит разумно, только как?
очень много решений, от синхронизации по времени, буферизации и проч, вот буферизация на примере решения sentry https://blog.sentry.io/2016/02/23/buffering-sql-writes-with-redis
Maxim
Я пропустил, а что за задачу решаем?
Tishka17
Я пропустил, а что за задачу решаем?
хранение счетчиков показа объявлений
Oleg
хранение счетчиков показа объявлений
а у тебя строгие требовани к персистентности этих данных?