изменить конфигурацию базовой службы CherryPy без перезапуска

У меня есть веб-служба на основе CherryPy, которая выдает данные из плоских файлов на основе запроса запроса GET. Список файлов, которые он использует в качестве своей базы данных, указан в файле конфигурации на основе yaml.

Теперь каждый раз, когда я хочу добавить/удалить файл из этого файла конфигурации yaml, я редактирую файл конфигурации yaml, а затем перезапускаю службу.

Что было бы для меня самым простым способом реализовать схему, чтобы каждый раз, когда я изменяю файл конфигурации в файл конфигурации, веб-служба автоматически обнаруживала изменение и перезагружала содержимое этого файла без перезапуска.

Моя цель — полностью избежать простоев и не мешать клиентам, выполняющим запросы.


person Puneet Paul    schedule 24.03.2011    source источник
comment
Когда вы говорите, что данные из файлов, значит ли это, что вы используете инструмент staticdir? Или вы читаете все файлы и выполняете какие-то преобразования, прежде чем передавать данные, скажем, в HTML из обработчика вашей страницы? Будет ли слишком дорого читать файлы по каждому запросу? Ответы на каждый из них помогут найти ответ на главный вопрос.   -  person fumanchu    schedule 24.03.2011


Ответы (1)


Если ваш сервис стоит за апачем с помощью mod_rewrite: создайте два экземпляра вашего приложения с разными портами, и когда *mod_rewrite* настроен на перезапись запросов к экземпляру A, вы можете изменить файл конфигурации экземпляра B, после автоматического перезапуска вы можете изменить конфигурационный файл apache и введите:

/etc/init.d/apache reload

затем измените файл конфигурации экземпляра A.

Если ваш Cherpy является автономным, вы можете использовать прокси-сервер с упомянутыми двумя экземплярами.

person pylover    schedule 29.03.2011
comment
Я использовал другое решение. Что мы сделали, так это то, что каждый раз, когда необходимо добавить новый файл в конфигурацию, мы запрашиваем URL-адрес в нашем приложении, единственной целью которого является обновление конфигурации с помощью нового файла и добавление содержимого файла в базу данных. - person Puneet Paul; 06.04.2011