
Timur
15.01.2017
09:14:10
ПОчитай.
Ну это один вариант из сотен.

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

Maxim
15.01.2017
09:15:30

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

Quet
15.01.2017
09:16:30

Maxim
15.01.2017
09:17:12

Timur
15.01.2017
09:17:33

Maxim
15.01.2017
09:17:52

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

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

corpix
15.01.2017
09:21:56

Timur
15.01.2017
09:21:59

Daniel
15.01.2017
09:22:11

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
тут дело не в байтах, а в штуках
тысячи, тесятки тысяч, сотни тысяч - это одно, можно раз в минуту просто сканировать дерево и удалять лишнее.

Timur
15.01.2017
09:24:21

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

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

corpix
15.01.2017
09:24:49

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

Timur
15.01.2017
09:29:16

Maxim
15.01.2017
09:29:23

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

Daniel
15.01.2017
09:31:51

Phil
15.01.2017
09:32:12

Maxim
15.01.2017
09:32:58

Phil
15.01.2017
09:33:02

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

Maxim
15.01.2017
09:33:45

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

Daniel
15.01.2017
09:37:40

Google

Phil
15.01.2017
09:38:04

Daniel
15.01.2017
09:38:12

Phil
15.01.2017
09:38:33

corpix
15.01.2017
09:39:25

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

Phil
15.01.2017
09:40:48

Daniel
15.01.2017
09:41:13

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

Roman
15.01.2017
09:42:03

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

Roman
15.01.2017
09:43:15

Daniel
15.01.2017
09:43:43

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
KISS и вообще.
+1

Roman
15.01.2017
09:48:07