@proGO

Страница 405 из 1674
Timur
15.01.2017
09:14:10
ПОчитай.

Ну это один вариант из сотен.

Quet
15.01.2017
09:14:54
в базу стучать при запросе файла ну и раз в сутки подчищать например

Maxim
15.01.2017
09:15:30
в базу стучать при запросе файла ну и раз в сутки подчищать например
Мне нужно жёстко прописать "время загрузки + 24 часа".

Google
Maxim
15.01.2017
09:15:46
А не так что б залитое в 23 часа через час удалилось

Timur
15.01.2017
09:15:58
http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-delay-queues.html Вот тебе ещё одно решение из тысяч.

Я думаю всякие Beanstalk это тоже умеют.

Maxim
15.01.2017
09:16:25
в базу стучать при запросе файла ну и раз в сутки подчищать например
При запросе вариант, конечно, но что если файл залили и к нему ни разу не обратились? Надо ж мусор подчищать

Timur
15.01.2017
09:17:33
У меня не амазон.
А что юзаете для очередей задач?

Timur
15.01.2017
09:18:02
http://beanstalkc.readthedocs.io/en/latest/tutorial.html

Вроде тоже есть delayed jobs.

?

Тут просто миллиарды вариантов.

Google
Maxim
15.01.2017
09:18:57
Ну вот мне бы такой вариант, что б и с Go совместимо и в докере работало и без лишних телодвижений где-то сбоку (типа того же nginx)

Timur
15.01.2017
09:19:36
Поставь Beanstalk, напиши worker на Go, который будет слушать tube из Beanstalk и пускай Beanstalk плюёт delayed задачами. Когда worker получит отложенную задачу, тогда и удаляет файл.

Beanstalk можно заменить Amazon SQS и прочим подобным.

Daniel
15.01.2017
09:20:37
ма-ма

просто мама

Maxim
15.01.2017
09:20:46
Поставь Beanstalk, напиши worker на Go, который будет слушать tube из Beanstalk и пускай Beanstalk плюёт delayed задачами. Когда worker получит отложенную задачу, тогда и удаляет файл.
Окей, гляну что это вообще. Но мне правда не очень хочется присабачивать какие-то удалённые инструменты, потому что это лишние запросы, время и вообще.

Daniel
15.01.2017
09:20:51
еще бинстолк влез

Timur
15.01.2017
09:20:52
ма-ма
Что не так? Очереди задач есть в любом проекте.

Daniel
15.01.2017
09:21:08
в чем задача-то, на человеческом языке?

Timur
15.01.2017
09:21:17
И я выше сказал, что способо миллионы. ?

Queue management один из вариантов, в зависимости от среды, где программа работать будет.

Maxim
15.01.2017
09:21:31
Какие есть варианты проверять время файл на предмет истечения срока с момента его загрузки? Допустим файл должен жить сутки, после чего удаляться.

По совету @kirilldanshin пытался изящно выкрутиться через подписки RethinkDB, но ничего не вышло. Пробовал записать в базу время загрузки файла и время его выпиливания, а через changefeed автоматически получать список объектов, чьё записанное время удаления оказывалось меньше текущего локального времени.

Daniel
15.01.2017
09:21:36
Что не так? Очереди задач есть в любом проекте.
вообще-то нет. и вообще-то надо их избегать, пока возможно

Timur
15.01.2017
09:21:59
Maxim
15.01.2017
09:22:34
время создания файла лежит в его метаинформации. в чем проблема?
Простукивать это ежесекундно? Не очень как-то

Daniel
15.01.2017
09:22:48
а сколько файлов?

corpix
15.01.2017
09:22:56
Google
Maxim
15.01.2017
09:23:07
Неограничено по количеству, до 2гб размером

Daniel
15.01.2017
09:23:22
тут дело не в байтах, а в штуках

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

Daniel
15.01.2017
09:24:33
миллионы - это другое, надо придумывать какой-то индекс и средства поддержания его актуальности

Timur
15.01.2017
09:24:34
Как-то не очень элегантно.

corpix
15.01.2017
09:24:49
Простукивать это ежесекундно? Не очень как-то
Кстати, а зачем тебе ежесекундно? Почему не смотреть раз в день, удаляя файлы "старше чем N"? Зачем вся эта "риалтаймовость" в этой задаче?

Timur
15.01.2017
09:24:57
Daniel
15.01.2017
09:24:58
Угу, и мучать диски.
я знаю, о чем говорю. диски тут практически не мучаются

Timur
15.01.2017
09:25:36
SELECT created_at FROM file WHERE create_at + 24 hours; Всё! И это делать раз в N минут.

Daniel
15.01.2017
09:26:07
так вот - дело в штуках

Timur
15.01.2017
09:26:23
Ага, ну короче задача реально простая.

Daniel
15.01.2017
09:26:23
сколько штук файлов мы планируем разместить?

Maxim
15.01.2017
09:27:37
Timestamp в БД — и есть индекс. ? Выше уже 3 человека сказали ему.
Да сохраняю Я таймстамп и что? Разница либо в простукивании диска, либо в простукивании базы.

Timur
15.01.2017
09:29:16
Да сохраняю Я таймстамп и что? Разница либо в простукивании диска, либо в простукивании базы.
Эм, так в чём проблема? Простукивай базу. Это разве медленно будет? Прикрути простой database iterator (data provider; или как будет правильно в терминологии библиотек Go Lang?), и удаляй файлы.

Maxim
15.01.2017
09:29:23
сколько штук файлов мы планируем разместить?
Вариант когда база сама будет стучать Go успехом не увенчалась.

Daniel
15.01.2017
09:29:46
а как бы она могла это делать?

нет, правда, как, вы думаете, работаеt record TTL?

Maxim
15.01.2017
09:31:03
а как бы она могла это делать?
В rethink есть changefeeds, когда после запроса отстается открытый поток, рассылающий данные если что-то внутри произошло.

Daniel
15.01.2017
09:31:31
продолжайте...

Google
Maxim
15.01.2017
09:31:43
Phil
15.01.2017
09:32:12
вообще-то нет. и вообще-то надо их избегать, пока возможно
мммм... а где та граница, когда возможно? я вот прямо сейчас озадачен

Phil
15.01.2017
09:33:02
Угу, и мучать диски.
любая FS в 2017 году закэширует список

Daniel
15.01.2017
09:33:19
там, где тебе реально нужна очередь - там и придется ее использовать :)

любая FS в 2017 году закэширует список
зависит от размера списка

Daniel
15.01.2017
09:33:50
да

очередь - это у нас что?

Admin
ERROR: S client not available

Phil
15.01.2017
09:34:15
Timur
15.01.2017
09:35:28
Ну правильно. Если подходить с точки зрения предметной области, то вот это оно и всё и есть. ? Задача: «Удалить файл в будущем» Payload дополнительный: «Через N секунд после создания» Отправляем задачу, забываем про неё. В будущем она приходит worker'у и он её выполняет.

Daniel
15.01.2017
09:35:31
очередь - это FIFO по определению

corpix
15.01.2017
09:35:36
Я люблю усложнять себе жизнь.
Ну это трейдофф тогда между правильностью реализации и возможностями текущего окружения. Если база не умеет в key expiration то приходится обходиться тем что есть. И надёжнее всего здесь будет именно "простукивание" с некоторой периодичностью

Daniel
15.01.2017
09:36:16
вот смотришь на свою задачу, и думаешь - а если это будет не FIFO что изменится?

если ничего - значит тебе не нужна очередь

Phil
15.01.2017
09:37:32
иногда нужна "куча задач". но я такого термина не слышал

Roman
15.01.2017
09:37:35
я так понимаю это имеет смысл только если ты тредишься. в однопотоке нет
Всмысле? Меня много гороутин и в каких-то я читаю, в каких-то пишу в мапу

Google
Phil
15.01.2017
09:38:04
Daniel
15.01.2017
09:38:12
Всмысле? Меня много гороутин и в каких-то я читаю, в каких-то пишу в мапу
GOMAXPROC выставлял в 1? если да - можешь ничего не защищать

Phil
15.01.2017
09:38:33
GOMAXPROC выставлял в 1? если да - можешь ничего не защищать
во, да. как раз пошёл гуглить как этот параметр зовется

corpix
15.01.2017
09:39:25
а если умеет?! еще раз: в какой момент происходит этот самый expiration?
Ну по описанным условиям, если умеет то можно попробовать. Меньше забот будет

Daniel
15.01.2017
09:39:52
ну-ну

Phil
15.01.2017
09:40:48
если ничего - значит тебе не нужна очередь
я например очередью пытаюсь избежать многоэтажной транзакции в базе и вообще раздраконить функциональные части по разным базам

Maxim
15.01.2017
09:41:21
Из слака по RethinkDB

Phil
15.01.2017
09:43:11
а это зачем?
что конкретно? зачем избегать многоэтажных SELECT FOR UPDATE или зачем по разным базам раконить?

Phil
15.01.2017
09:43:47
Не fs, а vfs
ну... даже не знаю... тебе лучше знать. я вообще конкретно отличия не знаю

Maxim
15.01.2017
09:43:53
Roman
15.01.2017
09:44:18
Лучше даже схлопнуть до /dir/yyyymmdd/

И?
Что и? Можно просто 2-3 раза в сутки сканировать пару каталогов по mtime

У удалять

Обычным find -delete

Timur
15.01.2017
09:46:54
/dir/year/month/day/sha1_from_file
Лучший вариант.

KISS и вообще.

+1

Roman
15.01.2017
09:48:07
Лучший вариант.
Ну, только схлопнуть лучше до 1 каталога

Страница 405 из 1674