@ru_python

Страница 1147 из 9768
Matwey
29.06.2016
20:48:34
Так что ты уже можешь начинать писать питон 3 реди код

Andrey
29.06.2016
20:50:41
да я не говорю, что не могу писать под третий, просто у меня пригар от хипстоты "ой у тебя проджект на второй ветке, ебать ты динозавр".

⬗VLAD⌶K⬖
29.06.2016
20:51:19
мужики давайте за теорию дарвина перетрем , мне вот оппоннент утверждает что нет переходных форм человека, вообще все лабуда и мы произошли от каких то там богов

Google
⬗VLAD⌶K⬖
29.06.2016
20:52:31
попроси отсыпать,пожалуйста
я настаиваю чтобы вы мне дали основание считать его дураком

Matwey
29.06.2016
20:52:36
⬗VLAD⌶K⬖
29.06.2016
20:53:01
просто сам доказать обратное не могу

Matwey
29.06.2016
20:53:22
Например, могу вспомнить что с collectd такое безобразие, что там платины только на втором питоне можно было писать.

dmks
29.06.2016
20:53:39
просто сам доказать обратное не могу
а нахрена ты ему что то доказываешь? Он тебе втирает пусть сам и доказывает :D

Matwey
29.06.2016
20:54:45
Ну "мы произошли от богов " это уже нефальсифицируемая гипотеза. Вести логический дискурс далее бессмысленно

Andrey
29.06.2016
20:55:50
Например, могу вспомнить что с collectd такое безобразие, что там платины только на втором питоне можно было писать.
я в профессии совсем недавно, может и стоит больше времени уделить трешке и ее новым штукам

dmks
29.06.2016
20:56:22
Чайник Рассела? :))
Да,именно он :D

⬗VLAD⌶K⬖
29.06.2016
20:56:24
Ну "мы произошли от богов " это уже нефальсифицируемая гипотеза. Вести логический дискурс далее бессмысленно
с чего это стало вдруг гипотезой, еще не доказан факт существования нло, только на уровне - я вот увидел, вот фотка моего летающего тазика

Matwey
29.06.2016
20:57:25
я в профессии совсем недавно, может и стоит больше времени уделить трешке и ее новым штукам
Там из новых штук только человеческая поддержка текста и юникода. Кое-что вроде как подправили в самом интерпретаторе якобы. Теперь утверждают, что GIL не тормозит.

Andrey
29.06.2016
20:59:16
Там из новых штук только человеческая поддержка текста и юникода. Кое-что вроде как подправили в самом интерпретаторе якобы. Теперь утверждают, что GIL не тормозит.
как я понимаю "поддержка юникода" исключает эти танцы с .encode('utf-8'), например? Ну меня там еще async привлекает, который стал нативной частью интерпретатора

Google
abc
29.06.2016
21:00:47
Опциональная типизация

Matwey
29.06.2016
21:01:40
как я понимаю "поддержка юникода" исключает эти танцы с .encode('utf-8'), например? Ну меня там еще async привлекает, который стал нативной частью интерпретатора
Теперь есть "строки" двух типов: байтовая последовательность и юникодный текст. Юникодный текст можно представить байтовой последоваткльностью в любой кодировке и наоборот. Как то так. На мой взгляд достаточно удобное разделение.

Andrey
29.06.2016
21:05:20
@abc @Ox2207 пожалуй погружусь в тему трешки посерьезней, спасибо

⬗VLAD⌶K⬖
29.06.2016
21:15:55
ссылка на архив обновлена , забираем коллекцию со всего интернета=)https://www.dropbox.com/sh/tbtps8r0i5hsfua/AACWPocw-YdYCGcLB9fGciYKa?dl=0

Meent
29.06.2016
21:49:37
drjackild
29.06.2016
22:39:57
@pragus писать асинхронный код?

⬗VLAD⌶K⬖
29.06.2016
22:50:06
Costel Salanders
29.06.2016
22:53:23
Попробую собрать

Maxim
29.06.2016
22:54:46
Хей, ночной. Как в Редисе сделать атомарный инкремент с проверкой, что ключ не заэкспайрился?

Короче, нужно делать инкремент только для существующего ключа и не заэкспайреного.

Watch-exec не катит, потому что watch не срабатывать на expire от сервера.

⬗VLAD⌶K⬖
29.06.2016
22:55:25
Попробую собрать
Не обещаю, но попробую.

Maxim
29.06.2016
22:55:30
Думаю, может Луа скрипт туда пихнуть.

Он вроде тоже атомарно выполняется, можно еще логику туда насовать типа проверки ttl.

Но пока не знаю.

Maxim
29.06.2016
23:06:25
Батч?
В смысле батч? Был вариант с транзакцией, вешать watch на ключ. Но watch ругается только когда конкурентное изменение ключа происходит. В моем случае ключ экспайрится самим сервером и watch это пропускает.

Google
Maxim
29.06.2016
23:06:52
Причем incr на ключ в Редисе, если ключ заэкспайрился, создаст новый, но с ttl -1.

То есть уже не volatile key.

^ кусок кода к проблеме. Там race condition, вот думаю как бы ее избежать.

Maxim
29.06.2016
23:09:32
Зачем вешать watch?
Я думал сначала, что watch отлавливает expire ключа. Оказалось, что нет, watch только отлавливает конкурентные изменения.

http://redis.io/topics/transactions

Roman
29.06.2016
23:12:16
а что ты хочешь сделать?

Maxim
29.06.2016
23:12:32
Там даже в камментах к WATCH неправильная инфа написана > I did an experiment on 2.6.16 and it seems that expiration of WATCHed keys does count as modification that would prevent EXEC from executing queued commands. http://redis.io/commands/WATCH Я написал коммент, что мол это типа не так, но у них там модерирование коментов и его до сих пор не зааппрувили.

Roman
29.06.2016
23:12:42
Исходная задача какая?

Maxim
29.06.2016
23:13:03
а что ты хочешь сделать?
Скинул выше скриншот. Проблема в том, что между проверкой существования и incr ключ может заэкспайриться.

Соответственно, задача — избежать race condition.

Maxim
29.06.2016
23:13:46
В данном случае гонка с сервером, который безжалостно экспайрит ключи.

Я видел. Исходная задача какая?
Делать инкремент, который в случае несуществования ключа возвращает ошибку. В Редисе инкремент создает ключ.

При таком решении как на скриншоте возможна ситуация: - ключ существует - ключ экспайрится - ключ инкрементится -> создается новый ключ со значением 1 и ttl -1.

Roman
29.06.2016
23:15:56
Maxim
29.06.2016
23:16:19
^ так ведь это и делается

Но после того как он проверится есть ms, во время которых ключ может заэкспайриться.

Roman
29.06.2016
23:16:58
Ну и?

Maxim
29.06.2016
23:17:20
Ну и мы получим - ключ экспайрится - ключ инкрементится -> создается новый ключ со значением 1 и ttl -1.

Google
Roman
29.06.2016
23:17:31
Ну создастся заново

В чем трабл?

Maxim
29.06.2016
23:17:43
То есть мы получим вообще левую фигню вместо значения и без ttl.

Roman
29.06.2016
23:18:22
Зачем тебе ттл

?

Maxim
29.06.2016
23:19:23
Потому что ключ временный.

Roman
29.06.2016
23:20:02
Я пытаюсь подтолкнуть к мысли, что если что кажется слишком сложным, то ты делаешь что-то не то или не так

Admin
ERROR: S client not available

Maxim
29.06.2016
23:20:06
В данном коде можно получить что временный ключ превратится в постоянный из-за race condition.

Roman
29.06.2016
23:20:37
Как у тебя формируется ключ?

Maxim
29.06.2016
23:20:45
В данном случае у меня есть конкретная задача: как сделать инкремент в Редисе только для существующего ключа, чтобы избежать race condition.

Как угодно. Это open source библиотека с определенными гарантиями.

Не моя, если что) Я просто хотел пофиксить один из issue, так как задача показалась мне интересной.

Автор предложил watch + exec, но это не работает по вышеуказанным причинам.

Maxim
29.06.2016
23:23:05
Думаю, может Луа скрипт туда пихнуть.
Ну да, тоже об этом думал.

Хотя нужно еще разобраться получше, как ключи экспайрятся в Луа-скриптах.

Roman
29.06.2016
23:24:37
Хотя нужно еще разобраться получше, как ключи экспайрятся в Луа-скриптах.
Причем тут это? Тебе надо просто сделать get и если ключ есть позвать инкремент

Maxim
29.06.2016
23:25:23
Причем тут это? Тебе надо просто сделать get и если ключ есть позвать инкремент
Между гетом и инкрементом сервер может заэкспайрить ключ. В этом race condition и заключается.

Но я не знаю, как в Луа-скриптах это отрабатывается. Если они атомарно выполняются, то такого быть не должно.

Google
Maxim
29.06.2016
23:26:12
Исходный issue, если интересно https://github.com/niwinz/django-redis/issues/181

Maxim
29.06.2016
23:27:37
Roman
29.06.2016
23:27:59
Может.
С фига ли?

Maxim
29.06.2016
23:29:32
С фига ли?
Мы про луа скрипты? Если про них, то они атомарные. Если не про них, то я уже приводил пример.

Maxim
29.06.2016
23:31:21
А. Тогда да, не должно быть конфликта.

Хотя меня дико смущает ситуация, что WATCH на ключ не ловит expire.

Просто дичайше. Это так нелогично выглядит.

Maxim
29.06.2016
23:35:45
Возвращай ошибку если incr вернул 1
Нет, это вообще какое-то предположение, которое библиотека не должна даже пытаться делать.

Roman
29.06.2016
23:36:54
Нет, это вообще какое-то предположение, которое библиотека не должна даже пытаться делать.
Почему предположение? В доке честно сказано про инкремент и выставление в 0

Maxim
29.06.2016
23:37:26
Потому что пользователь может сам создать ключ со значением 0 и выставленным или нет ttl.

Roman
29.06.2016
23:40:55
А может не создать

Alexey
30.06.2016
04:24:01
Alexey
30.06.2016
04:24:18
Даже убунта на тройку соскочила
куда там это говно соскочило — мало кого волнует.

finkel
30.06.2016
05:57:35
Teddy
30.06.2016
05:58:52
с того, что весь мир, слава б-гу не только на твоих проектах держится.
Ну, вообще, я тоже на втором еще сижу, но вот все смотрю на новые фишечки, и задумываюсь...

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