Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Программирование Новый топик    Ответить
 Интерполяция равномерности опросов без БД  [new]
Alibek B.
Member

Откуда:
Сообщений: 3315
Есть сервер, который примерно каждые 5 получает скриншот с удаленного узла. Связь с удаленным узлом не очень хорошая, поэтому иногда на скриншот уходит 5 секунд, иногда минута-две, иногда скриншот не получается, а иногда связь с удаленным узлом вообще пропадает.
Задание на получение скриншота делается по крону, каждые 5 минут. Если скриншот получить не удалось, сервер делает ещё одну попытку. Если и второй раз не удалось, сервер считает, что в данном временном слоте связи с удаленным узлом нет и до следующего запуска задания повторных попыток не производит.
Успешные скриншоты нужно подогнать к равномерным интервалам. К примеру в кольцевых БД типа RRD это называется интерполяцией.
При этом я хочу обойтись без баз данных. Есть каталог на каждый день, внутри каталога я сохраняю скриншоты, называя их по определенному шаблону, соответствующего каждому 5-минутному интервалу, и на этом я хочу ограничиться.
Как можно обеспечить равномерность интервалов? Есть что-нибудь более правильное, чем int(timestamp/300)*300 ?
24 сен 19, 19:41    [21978410]     Ответить | Цитировать Сообщить модератору
 Re: Интерполяция равномерности опросов без БД  [new]
L.Otujktd
Member

Откуда:
Сообщений: 81
Alibek B,
что требуется получить, в итоге?
Попробуйте сделать асинхронное получение, те агент сам готовит скриншоты в пределах этих 5 минут, а не по команде от сервера, а потом отдаёт те, которые попали в диапазон последний запрос плюс пять минут.
24 сен 19, 21:18    [21978445]     Ответить | Цитировать Сообщить модератору
 Re: Интерполяция равномерности опросов без БД  [new]
Alibek B.
Member

Откуда:
Сообщений: 3315
Удаленный узел это IP-камера, агент на ней не разместить.
Мне нужно получить равномерно распределенные скриншоты в течение дня, которые затем будут обрабатываться дополнительно.
24 сен 19, 21:22    [21978448]     Ответить | Цитировать Сообщить модератору
 Re: Интерполяция равномерности опросов без БД  [new]
L.Otujktd
Member

Откуда:
Сообщений: 81
Alibek B.
Удаленный узел это IP-камера, агент на ней не разместить.
Мне нужно получить равномерно распределенные скриншоты в течение дня, которые затем будут обрабатываться дополнительно.

Вариант снять статистику по качеству получения данных в пределах часа/дня/недели/месяца и уже на ее основе выбирать оптимальное время конекта.
Я так понимаю там ещё и gsm-модем встроенный и соответственно нно качество обработки будет так-же зависеть от состояния сотовой сети в конкретный момент времени.
24 сен 19, 21:47    [21978466]     Ответить | Цитировать Сообщить модератору
 Re: Интерполяция равномерности опросов без БД  [new]
Alibek B.
Member

Откуда:
Сообщений: 3315
Сомневаюсь, что будет какая-то зависимость. Все зависит от погоды на Марсе, предсказать заранее невозможно.
Поэтому я и думаю получать скриншоты примерно каждые пять минут, подгоняя их к границам точных 5-минутных интервалов.
24 сен 19, 22:51    [21978491]     Ответить | Цитировать Сообщить модератору
 Re: Интерполяция равномерности опросов без БД  [new]
exp98
Member

Откуда:
Сообщений: 1846
Как понял это я.
Каждый день создаются каталог, а в нём 5-минутные п/каталоги.
Они заполняются по крону кажные 5 мин (если повезёт, и если задержка не превысит 5 мин)
Т..о, в конце дня имеется массив 5-мин каталогов, и массив фот.
Некоторые каталоги заполнены фотами, нек-ые пустые.
Если задержки короткие, то каждое фото попадает в свой каталог.

А как хочется?
24 сен 19, 23:12    [21978495]     Ответить | Цитировать Сообщить модератору
 Re: Интерполяция равномерности опросов без БД  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 48641
Alibek B.
подгоняя их к границам точных 5-минутных интервалов.

Чисто любопытно как ты будешь подгонять изображение ко времени "за минуту до этого"? Если в 12:00 на стоянке взорвалась машина, а у тебя скриншот сделан в 12:01, будешь трассировать обломки чтобы собрать обратно изображение взрывающейся машины?..

Сдаётся мне, что к такой задаче ту не готов, поэтому тупо бери скриншот с отметкой времени, ближайшей к нужному. Надеюсь, на первом курсе института тебя учили программировать циклы нахождения минимального/максимального значения в массиве...
25 сен 19, 13:42    [21978898]     Ответить | Цитировать Сообщить модератору
 Re: Интерполяция равномерности опросов без БД  [new]
Alibek B.
Member

Откуда:
Сообщений: 3315
exp98
Каждый день создаются каталог, а в нём 5-минутные п/каталоги.

Сейчас никак не сделано, скриншоты просто сохраняются в файлы с шаблоном yyyymmdd-hhnnss. И поскольку nnss у них нерегулярный, то с ними неудобно работать.
Я планирую использовать подкаталог для каждого дня, а внутри него сохранять файлы, имя которых будет соответствовать округленному интервалу (приведенному к границам 5-минутного интервала).
В сутки это получается 288 интервалов, поэтому в принципе имя файла даже может быть задано в виде ts-### (где ### принимает значение от 000 до 287), но тогда будет проблемой поменять длительность интервала (а я планирую перейти на минутные интервалы, если связь станет лучше).

Dimitry Sibiryakov
Надеюсь, на первом курсе института тебя учили программировать циклы нахождения минимального/максимального значения в массиве...

Если подумать головой, то станет ясно, что округление интервалов мне как раз и нужно для того, чтобы не перебирать циклы, а просто вычислить индекс нужного элемента.
25 сен 19, 14:21    [21978943]     Ответить | Цитировать Сообщить модератору
 Re: Интерполяция равномерности опросов без БД  [new]
mayton
Member

Откуда: loopback
Сообщений: 42917
Alibek B.
Как можно обеспечить равномерность интервалов? Есть что-нибудь более правильное, чем int(timestamp/300)*300 ?

Что такое равномерность?
25 сен 19, 14:40    [21978969]     Ответить | Цитировать Сообщить модератору
 Re: Интерполяция равномерности опросов без БД  [new]
Alibek B.
Member

Откуда:
Сообщений: 3315
Одинаковый временной интервал между разными скриншотами серии.
25 сен 19, 15:48    [21979034]     Ответить | Цитировать Сообщить модератору
 Re: Интерполяция равномерности опросов без БД  [new]
L.Otujktd
Member

Откуда:
Сообщений: 81
Alibek B.,
автор
Сейчас никак не сделано, скриншоты просто сохраняются в файлы с шаблоном yyyymmdd-hhnnss. И поскольку nnss у них нерегулярный, то с ними неудобно работать.
Я планирую использовать подкаталог для каждого дня, а внутри него сохранять файлы, имя которых будет соответствовать округленному интервалу (приведенному к границам 5-минутного интервала).
В сутки это получается 288 интервалов, поэтому в принципе имя файла даже может быть задано в виде ts-### (где ### принимает значение от 000 до 287), но тогда будет проблемой поменять длительность интервала (а я планирую перейти на минутные интервалы, если связь станет лучше).

Те надо раскидать по интервалам исходный набор файлов используя название с закодированным timestamp? Тогда Такой алгоритм-пробегаемся в цикле от 0 до 288 с приращением 5 минут и фильтруем весь набор файлов, затем для каждой группы создаём папку с номером интервала и кидаем туда ссылку на исходные Файлы в группе. Пойдёт?
Вообще по-идее и Файлы нет необходимости копировать, достаточно сделать файл-индекс с результатом группировки по фиксированным диапазонам
25 сен 19, 21:02    [21979285]     Ответить | Цитировать Сообщить модератору
 Re: Интерполяция равномерности опросов без БД  [new]
exp98
Member

Откуда:
Сообщений: 1846
Alibek B., я не знаю, какие трудности в обработке не равномерных интервалов, может инструмент такой убогий ... Но
1) отличный совет с индексацией
2) к названию файла можно добавить "000", чтобы потом меньше трудностей с меньшим периодом.
3) можно усечённое время в названии, а рядом текстовый файл и внутри него настоящее время (или наоборот), да мало ли как можно исхитряться ещё.
25 сен 19, 21:34    [21979307]     Ответить | Цитировать Сообщить модератору
 Re: Интерполяция равномерности опросов без БД  [new]
Alibek B.
Member

Откуда:
Сообщений: 3315
L.Otujktd
Вообще по-идее и Файлы нет необходимости копировать, достаточно сделать файл-индекс с результатом группировки по фиксированным диапазонам

Да, но это станет проблемой, если я вдруг решу изменить частоту опросов.
Поэтому лучше изначально использовать прореженные индексы (в качестве индекса использовать timestamp или индекс 0...1439 в расчете на ежеминутные интервалы).

exp98
Alibek B., я не знаю, какие трудности в обработке не равномерных интервалов, может инструмент такой убогий

Инструмент — шелл-скрипт.
Поэтому базы данных нет и индексный текстовый файл тоже не слишком будет удобен.
Лучше всего, чтобы имя файла являлось одновременно и индексов.
Иначе нужно будет считывать содержимое каталога (список файлов), парсить их имена или отметки времени, сортировать, искать соседей и т.д., что в шелл-скриптах делать неудобно.
25 сен 19, 22:09    [21979314]     Ответить | Цитировать Сообщить модератору
 Re: Интерполяция равномерности опросов без БД  [new]
L.Otujktd
Member

Откуда:
Сообщений: 81
Alibek B.
L.Otujktd
Вообще по-идее и Файлы нет необходимости копировать, достаточно сделать файл-индекс с результатом группировки по фиксированным диапазонам

Да, но это станет проблемой, если я вдруг решу изменить частоту опросов.
Поэтому лучше изначально использовать прореженные индексы (в качестве индекса использовать timestamp или индекс 0...1439 в расчете на ежеминутные интервалы).

exp98
Alibek B., я не знаю, какие трудности в обработке не равномерных интервалов, может инструмент такой убогий

Инструмент — шелл-скрипт.
Поэтому базы данных нет и индексный текстовый файл тоже не слишком будет удобен.
Лучше всего, чтобы имя файла являлось одновременно и индексов.
Иначе нужно будет считывать содержимое каталога (список файлов), парсить их имена или отметки времени, сортировать, искать соседей и т.д., что в шелл-скриптах делать неудобно.

Хорошо, сначала генерите индексный файл, а потом делаете софтлинки на группы файлов из файла-индекса , если нужно просто чтение файлов из папок группы. Будет два скрипта и все. Просто и элегантно:)
25 сен 19, 22:53    [21979338]     Ответить | Цитировать Сообщить модератору
Все форумы / Программирование Ответить