Anton B, довольно сомнительно, что вам нужно именно это - запускать скрипт раз в секунду. Скорее всего вам нужно выполнять какую-то бизнес-задачу. Но вы почему-то решили, что крон или systemd - единственный способ ее делать, тем самым ограничив выбор всего до двух решений, причем оба - корявые.
Каков сакрально-прагматический смысл сего действа? Что-то мне подсказывает, что вы явно не с той стороны подходите к задаче. Или уперлись во внутренние стереотипы относительно работы с временными промежутками и событиями.
Ну вот допустим у меня есть задача каждую секунду выбирать 10 случайных пользователей и совершать на ними какие-то действия.
Для начала - то что каждую секунду (условно) должно выполняться какое-то действие над группой пользователей эти пользователи СРАЗУ ощущают? То есть им приходит мгновенная нотификация или высылается смс?
Если нет - значит задачу можно разбить на большие промежутки времени и выполнять КРАТНО больше действий над КРАТНО большим количеством пользователей. Это вариант 1.
Второй вариант - вообще не выполнять никаких действий, и исходить из средней задержки от последнего действия.
ThunderCat, чуть выше придумал пример еще одной задачи "на планете Земля 20 миллиардов птиц, каждую секунду должно чирикнуть 100к случайных птиц". То есть птици должны чирикнуть сразу как только на них попал случай, а не все вместе раз в день.
Anton B, тут важно что вы делаете, считаете чириканье или физически ходите и дергаете за хвост. Если вам важно грубо говоря выполнить план по чириканью - все эти миллионы чириканий до задницы когда будут выполнены, хоть все вместе чирикнут утром, ваша задача же отчитаться в час дня что чирикнуло ровно столько сколько должно к этому времени. Вас по этому и спрашивают - какая задача стоит то? Хотя уже понятно что это жутко секретное how now, так что в принципе разглашение будет стоить вам дороже чем нормальное решение.
ThunderCat, да нет ничего секретного, я задачу написал) я честно говоря не понимаю почему привязались к задаче, когда я написал что мне надо раз в секунду выполнять какое-то действие... а меня начинают убеждать что мне этого не надо делать... неужели нет задач которые надо выполнять каждую секунду? у вас сердце бьется каждую секунду или в конце дня 80к раз? автомобиль едет, он топливо сжигает каждую секунду или один раз по итогам дня?
Еще раза задача "каждую секунду (прямо в эту секунду) должно чирикнуть несколько случайных птиц".
Конкретно моя практическая задача - симуляция действий пользователя с целью тестирования работоспособности проекта. Каждую секунду я выбираю несколько пользователей и от них выполняю какие-то случайные действия. Мне нужно делать это каждую секунду, а не все сразу, чтобы создать какое-то более или менее естественное поведение пользователей на проекте.
Anton B, Воот, это больше похоже на задачу, а то какие-то недомолвки... В данном случае, возможно более верным решением будет что-то типа RabbitMQ, очередь задач.
ThunderCat, про очереди читал, но кое что не понял.
Если смотреть со стороны воркера, то все вроде понятно: взять задачу из очереди и выполнить.
Но, опять переходим к моей задаче: получается все равно нужно "что-то", что будет в эту очередь раз в секунду класть задачи? Это "что-то" так же может класть какие-то другие задачи раз в час или в неделю. Это "что-то" что? Крон?
Последний вопрос из темы очередей. Я не понял, воркер после того как выполнит задачу должен взять следующую задачу или должен умереть, а потом кто-то типа systemd/supervisor его должен заново создать?
Anton B, Я если честно сейчас не помню, работал последний раз с очередями лет 5 назад, вроде по рабиту все довольно подробно расписано и инфы много, емнип он висит как сервис пока руками не задавишь, слушая на предмет новых задач.