У меня есть приложение ruby on rails, в котором я пытаюсь найти способ запускать код каждые несколько секунд.
Я нашел много информации и идей с использованием cron или cron-подобных реализаций, но они точны вплоть до минуты и/или требуют внешних инструментов. Я хочу отбросить задачу каждые 15 секунд или около того, и я хочу, чтобы она была полностью автономной внутри приложения (если приложение останавливается, задачи останавливаются и внешняя настройка).
Это используется для генерации данных кэша. Каждые несколько секунд задача будет собирать некоторые данные, а затем хранить их в кеше, который будет использоваться всеми клиентскими запросами. Задача довольно медленная, поэтому ее нужно запускать в фоновом режиме, а не блокировать запросы клиентов.
Я новичок в рубине, но имею сильный фон perl, и так, как я бы решил это, было бы создание таймера и обработчика интервалов, который вилки, запускает код, а затем выходит, когда это будет сделано.
Возможно, было бы даже лучше всего имитировать запрос клиента и иметь собственную вилку контроллера rails. Таким образом, я мог бы запустить задачу, нажав на URI для нее (хотя, поскольку задача будет выполняться каждые несколько секунд, я сомневаюсь, что мне когда-нибудь понадобится, но может иметь будущее использование). Хотя было бы тривиально просто заставить контроллер вызывать любой метод, который вызывается планировщиком периодических задач (один раз он есть).