Стабильность batch операций

WMix

герр M:)ller
Партнер клуба
Вурдалак, я не разбирался еще с лявравским. просто смотрю они спорят о адаптере...
 

Вурдалак

Продвинутый новичок
Вурдалак, я не разбирался еще с лявравским. просто смотрю они спорят о адаптере...
Некоторые здешние товарищи любят выдавать смену одного драйвера на другой за целое грандиозное архитектурное решение, это да.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Вместо запуска по крону в современных дистрибутивах, где init-система имеет функции супервизора (upstart, systemd), может быть удобно запускать ей. Пусть себе скрипт делает работу и дохнет - само же и перезапустится моментально, и c pid-файлами само разберется. Несколько инстансов современные инит-системы тоже умеют.
прикольная идея. надо понять можно ли задачу для супервизора ставить не от рута. крон-то может настроить кто угодно, а рута на production обычно нет

Если события возникают достаточно редко, активный поллинг сам по себе получается слишком нагрузочным, и хочется запускать обработчик только по факту получения события - можно взять gearman, например. Он хотя бы достаточно простой. Что касается возможной потери данных - так можно отправлять не данные, а уведомления, потерять одно уведомление совсем не страшно, если оно в виде "чувак, там для тебя что-то есть". Но тут уже надо аккуратнее - не устроить себе race condition.
да не нужны ему никакие gearman, ZendQueue и т.п.
ему надо пересчитывать 50 тысяч скидок в день за 5 минут, из которых 4 займет исполнение запросов update в базе
 

WMix

герр M:)ller
Партнер клуба
нормальный демон запускается от root'a, и переключается на пользователя в зависимости от задачи сам
 

WMix

герр M:)ller
Партнер клуба
AnrDaemon, может ты чтото не понимаешь? или у тебя есть права root'а или нет, если есть, то ты и есть root.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
тут основной фактор - cron знают все, а настройку супервизора надо делать только админу
 

WMix

герр M:)ller
Партнер клуба
да, я забыл про словосочетание "админ-идиот", не мог виртуалку с root'ом под проект поставить
 

fixxxer

К.О.
Партнер клуба
тут основной фактор - cron знают все, а настройку супервизора надо делать только админу
ты переоцениваешь сложность :)

PHP:
$ cat /etc/init/some-service-master-production.conf
description "Some service: master"
start on filesystem or runlevel [2345]
stop on runlevel [!2345]
respawn
setuid username
setgid groupname
exec /usr/bin/php -f /path/to/run.php -- --config=config-production.php
Этвсё. Хотя я перед таким примером люблю дать ссылку на upstart cookbook :trollface:
С systemd не сложнее.
 

AnrDaemon

Продвинутый новичок
AnrDaemon, может ты чтото не понимаешь? или у тебя есть права root'а или нет, если есть, то ты и есть root.
Я как раз понимаю.
Вполне можно дать возможность одному пользователю запустить одну конкретную программу от имени другого пользователя, не давая ни тому ни другому прав рута.
Код:
www-data        ALL = (sslca) NOPASSWD: /home/.CA/bin/minica.sh req*
 

WMix

герр M:)ller
Партнер клуба
AnrDaemon, чет не вьеду
Код:
wmix ALL = NOPASSWD: /etc/init.d/nginx
Код:
$ sudo /etc/init.d/nginx stop
[sudo] password for wmix: << какого?
как это делается?
 
Сверху