Aragaer
то есть нельзя удалить более молодую запись, если более древнюю держит какой-то ридер
Aragaer
хотя я подумаю над этим
Denis
Denis
Потому что он ее сейчас обрабатывает
Aragaer
ну вот сейчас моя позиция это "если захвачено, то это явно ошибка в алгоритме, поэтому так дальше жить нельзя, эксепшн и досвиданья"
Denis
В смысле? Он же не моментально отрабатывает
Denis
Он захватил и заснул, в это время новое добавилось
Aragaer
в смысле "у нас в буфере есть место под 100 записей. Если нашелся ридер, которому почему-то нужна аж 100-я, то это явно какой-то косяк в алгоритме"
Aragaer
и если не косяк, то надо увеличивать буфер
Denis
То есть ридер обязан отработать мгновенно?
Aragaer
100 записей приходят не сразу, а в определенном предсказуемом темпе
Aragaer
ридеры тоже должны работать в определенном предсказуемом темпе
Aragaer
то есть нагрузка должна быть ровной и равномерной (эмбеддед же), без пиков
Denis
Тогда это совсем другая задача
Denis
Я думал, что лок фри надо
Aragaer
ок. Попробую переформулировать. Есть один или несколько райтеров, каждый из которых со стабильным темпом кладет записи в буфер. Соответственно можно сразу сказать, какое время записи в буфере живут - размер буфера делим на скорость появления новых записей.
Denis
Тогда просто выбираем первую подходящую запись и читаем ее
Aragaer
каждый ридер независимо от других обращается к разным записям, как правило относительно текущего таймстемпа, но не всегда им нужна самая последняя запись - некоторым (алгоритм такой) нужны в том числе и более старые
Denis
Он может несколько посмотреть?
Aragaer
то есть "дайте мне запись свежее таймстемпа 100500" и "дайте мне запись из интервала 100400-100450"
Aragaer
может
Denis
Ну вот, пусть начнет с самой ранней и идет вперед
Aragaer
то есть если ему очень сильно надо, он может к себе утянуть (скопировать) запись, чтобы все стало легче. Но копирования хочется избежать
Aragaer
то есть он инплейс смотрит запись, что-то у себя считает и так далее
Aragaer
как именно он это делает - вопрос ридера, ридеры могут быть разными, но каждый должен (ожидается) успевать на текущем буфере отрабатывать с учетом нагрузки системы
Aragaer
соответственно ситуация, когда оказывается, что запись, которую райтер должен быть переиспользовать, а она прям щас захвачена каким-то ридером, я воспринимаю как "ну блин, не успели"
Aragaer
нагрузка оказалась выше расчетной, ридер не успел отработать, что-то еще.
Aragaer
фишка с тем, что ридер может прийти с запросом "хочу запись от таймстемпа 123456", а система видит, что такой записи _еще_ нет, поэтому ридер блочится -- это так, бонус.
Denis
Ну пусть в спинвейте крутится
Aragaer
кондвар можно, не проблема
Апач
Есть такая фича в питоне чтобы последнее выражение в методе было возвращаемым значением?
Denis
Нет
Fᴏʀᴅᴇɴ
Vladislav
Привет, а никто не знает "hacky" способ чтобы сделать сделать асинхронные функции (сопрограммы) само-awaitable ?
(т.е. чтобы не нужно было каждый раз дописывать слово await)
(с этим постоянно проблемы)
Maxim
Denis
Апач
Fᴏʀᴅᴇɴ
эх, если бы придумали асинхронный по дефолту язык..
Апач
эрланг?
Denis
Vladislav
(хочу именно в проект на aiohttp впихнуть)
(знаю что есть greenlet, но уже есть готовый код)
Апач
эрланг - модель акторов, она ассинхронна по дефолту
Vladislav
да, но сделать сущность, которая без await бы возвращала данные из сопрограммы
Vladislav
что-то по типу asyncio.run, только для каждой корутины
Апач
Vladislav
Апач
монадическая семантика с мапом и флатмапом скорее всего что ты хочешь
Denis
Апач
тебе await нужно будет только в самом конце, няп что там написано
Vladislav
понял, спасибо.
Какой-никакой - выход, но еще не уверен что это подойдет
Anonymous
может ли кто нибудь объяснить новичку - что есть что на конкретном примере
Alex
Anonymous
спсибо
Fᴏʀᴅᴇɴ
привет
есть какая то реализация TTL в питоне?
Alex
Fᴏʀᴅᴇɴ
Alex
ну редиску знаешь?
> есть какая то реализация TTL в питоне?
и как это следует из твоего вопроса?
Fᴏʀᴅᴇɴ
там можно каждому ключу присвоить некий TTL, после которого он удалится сам, без контроля от меня
Fᴏʀᴅᴇɴ
вот аналог такой в питоне, чтобы не было сетевого лага
Alex
окей, тебе нужен in-memory cache с TTL
Fᴏʀᴅᴇɴ
да, криво сформулировал вопрос)
Alex
так бы сразу и сказал
Alex
да полно их
Alex
считай выше фраза по которой гуглить
Fᴏʀᴅᴇɴ
Egor
Привет.
Подскажите Best Practice для получения параметров из командной строки в Python.
Написал ф-ию для их получения с обработкой возможных ошибок (👆)
Насколько адекватно использовать такой helper?
P.S. Не серчайте, если что, только-только изучаю Python
Tigran
argparse же
Alex
Fᴏʀᴅᴇɴ
Alex
выбирай любой по вкучу и еще вагон и маленькая тележка других
Alex
кстати argparse - говно, но есть в стдлибе
Tigran
абсолютли
Egor
Так и думал, что что-то есть, но не нагуглилось.
Спасибо, комрады
Fᴏʀᴅᴇɴ
Tigran
айроникалли, в го тоже есть встроенный модуль для этого, и он тоже хуёвый
Aragaer
мне норм, потому что не надо разбираться со всеми остальными
Alex
почему говно?)
например потому что для аргумента --myfunnyarg сработают так же --my, --myfun ну и т.д., ты понял.
Fᴏʀᴅᴇɴ