Имам услуга Upstart, която трябва да стартира множество работни екземпляри (използвайки rq като опашка за задания). Но имам проблеми с подаването на команди с интервали към стартовия панел на услугите.
Моята конфигурация на Upstart (worker-manager.conf) изглежда така:
description "my worker manager"
instance $id
start on runlevel [2345]
stop on runlevel [!2345]
respawn
script
logfile="/home/ubuntu/worker.log"
exec bash -c $cmd 2>$logfile
end script
И така, за да стартирате работника, това работи:
sudo service worker-manager start id=1 cmd="rqworker"
Но това не:
sudo service worker-manager start id=1 cmd="rqworker -v queue_1"
Грешката, която получавам е:
start: Env must be KEY=VALUE pairs
Все още не съм имал късмет с използването на двойни кавички, единични вътрешни двойни кавички или избягване на празното пространство. Твърдото кодиране на аргумента в конфигурационния файл работи.
Не мога да предам командата като множество аргументи, защото не знам предварително кои или колко опашки трябва да бъдат прослушани и т.н. Заобиколното решение, което имам в момента, е да поставя командата във файл и да оставя услугата мениджърът го прочете оттам, но това е объркано и съм сигурен, че има по-добър начин. Освен това се предполага, че всичко това се случва на куп екземпляри „миньони“ на AWS, контролирани от главен, така че това ограничава броя на отворените за мен решения. Някакви идеи?