Size: a a a

2020 April 01

RB

Roman Bolkhovitin in rannts
😂😂😂

и снова "There should be one-- and preferably only one --obvious way to do it."
источник

RB

Roman Bolkhovitin in rannts
кстати, про экспоненциальный бекофф у меня давно есть вопрос.

в этой реализации если начнутся проблемы, то delay будет расти до максимума, а потом все станет хорошо на какое-то продолжительное время, а потом опять плохо и retry будет сразу с максимальной задержкой.

какие варианты его сбрасывать? самый очевидный это оформлять в виде класса и коллбек внутрь func передавать, а есть какие-то альтернативы?
источник

SA

Sergey Arkhipov in rannts
почему он будет расти до максимума-то?
источник

RB

Roman Bolkhovitin in rannts
ну когда retry начнутся
источник

RB

Roman Bolkhovitin in rannts
генератор начнет крутиться и упрется в MAX_DELAY, это правильно. но когда все стабилизируется мне бы хотелось уметь состояние сбрасывать, чтобы при повторных проблемах все началось сначала, а не сразу с максимальной задержки.
источник

БС

Байт Словович in rannts
Sergey Arkhipov
по ощущениям, там мусора больше, чем пользы
t.Union[None, t.Tuple[t.Type[BaseException], ...]],    адъ
источник

SA

Sergey Arkhipov in rannts
Можно как t.Optional, да. Но сути это не меняет. Хочу кортеж типов эксепшнов
источник

SA

Sergey Arkhipov in rannts
Roman Bolkhovitin
ну когда retry начнутся
попробуй позапускать, ничего не упирается 🙂 там ограничение в max_delay, а так все генерируется относительно постоянной нижней границы
источник

RB

Roman Bolkhovitin in rannts
а алиасы никтому не нравятся?
Exceptions = t.Union[None, t.Tuple[t.Type[BaseException]
источник

БС

Байт Словович in rannts
Кстати есть не точность..
Когда достигнет максимум, то у тебя задержки будут РОВНО MAX_DELAY. А её бы тоже не плохо рандомизировать
источник

RB

Roman Bolkhovitin in rannts
Sergey Arkhipov
попробуй позапускать, ничего не упирается 🙂 там ограничение в max_delay, а так все генерируется относительно постоянной нижней границы
щас попробую в репле изобразить что пытаюсь словами сказать
источник

SA

Sergey Arkhipov in rannts
Roman Bolkhovitin
а алиасы никтому не нравятся?
Exceptions = t.Union[None, t.Tuple[t.Type[BaseException]
очень-очень быстро они начинают так сильно захламлять код, что лучше не надо. Точнее надо, но только в совсем уж особых случаях. но по примеру выше можно заметить, что у нас есть сточная канава MYPROJECT.types, где настоящая содомия
источник

БС

Байт Словович in rannts
Roman Bolkhovitin
щас попробую в репле изобразить что пытаюсь словами сказать
Ретрай делает на каждое конкретное действие. То есть когда связь восстановилось то все "действия " пройдут. Новые же будут делать с нуля.
источник

RB

Roman Bolkhovitin in rannts
Байт Словович
Ретрай делает на каждое конкретное действие. То есть когда связь восстановилось то все "действия " пройдут. Новые же будут делать с нуля.
во, спасибо.  меня посто заклинило, что func это какая-то долгоживущая хрень, а не одноразовое действие.
пардон
источник

БС

Байт Словович in rannts
А то что тебе надо, это rate limiter и QoS
источник

KK

Kirill (Cykooz) Kuzminykh in rannts
А там реально везде нужен тайпинг? Вот например в случае с backoff_delays(), тот же PyCharm сам выведет что у неё результат имеет тип Iterable[tt.Timeout], если внутри будет понятно что переменная value имеет тип Timeout
источник

SA

Sergey Arkhipov in rannts
У нас далеко не все пользуются пайчармом
источник

KK

Kirill (Cykooz) Kuzminykh in rannts
А mypy не умеет что ли такое выводить?
источник

SA

Sergey Arkhipov in rannts
Не помню(
источник

💭П

💭 Руслан Прохоров in rannts
Kirill (Cykooz) Kuzminykh
А mypy не умеет что ли такое выводить?
они на емаксах и вимах )
источник